mirror of
https://github.com/Jous99/F4MP.git
synced 2026-01-12 23:00:53 +01:00
113 lines
3.2 KiB
YAML
113 lines
3.2 KiB
YAML
name: Build windows
|
|
|
|
on:
|
|
pull_request:
|
|
push:
|
|
branches:
|
|
- master
|
|
- prerel
|
|
workflow_call:
|
|
inputs:
|
|
build-mode:
|
|
required: true
|
|
type: string
|
|
default: 'releasedbg'
|
|
upload-build-for-next-job:
|
|
required: true
|
|
type: boolean
|
|
default: false
|
|
outputs:
|
|
str-version:
|
|
description: "Skyrim Together version string"
|
|
value: ${{ jobs.build.outputs.version }}
|
|
|
|
jobs:
|
|
build:
|
|
strategy:
|
|
matrix:
|
|
os: [windows-latest]
|
|
arch: [x64]
|
|
|
|
runs-on: ${{ matrix.os }}
|
|
if: "!contains(github.event.head_commit.message, 'ci skip')"
|
|
|
|
outputs:
|
|
version: ${{ steps.output-version.outputs.version }}
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
# We need full history in order to create a version string (BuildInfo.h)
|
|
fetch-depth: 0
|
|
|
|
- name: Checkout submodules
|
|
run: |
|
|
git submodule sync --recursive
|
|
git submodule update --init --force --recursive --depth=1
|
|
|
|
- name: Checkout master on tag push
|
|
if: github.ref_type == 'tag'
|
|
# Checkout only if the tag was pushed to master
|
|
run: (git rev-parse HEAD) -eq (git rev-parse origin/master) -and (git checkout master)
|
|
|
|
- name: Cache xmake dependencies
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: ~/AppData/Local/.xmake/packages
|
|
key: ${{ runner.os }}-xmake-${{ hashFiles('**/xmake.lua') }}
|
|
|
|
# Install xmake
|
|
- name: Setup xmake
|
|
uses: xmake-io/github-action-setup-xmake@v1
|
|
with:
|
|
xmake-version: 2.9.8
|
|
actions-cache-folder: '.xmake-cache' # This doesn't cache dependencies, only xmake itself
|
|
actions-cache-key: ${{ matrix.os }}
|
|
|
|
- name: Configure xmake and install dependencies
|
|
run: xmake config --arch=${{ matrix.arch }} --mode=${{ inputs.build-mode }} --yes -vD
|
|
|
|
# Build the client
|
|
- name: Build with xmake
|
|
run: |
|
|
xmake -y
|
|
echo "STR_BUILD_DIR=build/windows/${{ matrix.arch }}/${{ inputs.build-mode }}/" >> $env:GITHUB_ENV
|
|
|
|
# Create distrib
|
|
- name: Output distrib binaries via xmake
|
|
run: |
|
|
xmake install -o distrib
|
|
cp -Force -Recurse distrib/bin/* ${{ env.STR_BUILD_DIR }}
|
|
|
|
# Building the Together UI
|
|
|
|
- name: Setup pnpm
|
|
uses: pnpm/action-setup@v4
|
|
with:
|
|
version: 9
|
|
|
|
- name: Setup Node
|
|
uses: actions/setup-node@v4
|
|
with:
|
|
node-version: lts/iron
|
|
cache-dependency-path: Code/skyrim_ui/pnpm-lock.yaml
|
|
cache: 'pnpm'
|
|
|
|
- name: Build the UI
|
|
run: |
|
|
pnpm --prefix Code/skyrim_ui/ install
|
|
pnpm --prefix Code/skyrim_ui/ deploy:production
|
|
cp -r Code/skyrim_ui/dist/UI ${{ env.STR_BUILD_DIR }}
|
|
|
|
- id: output-version
|
|
run: echo "version=$(git describe --tags)" >> $env:GITHUB_OUTPUT
|
|
|
|
- name: Upload build files for the next job
|
|
if: ${{ inputs.upload-build-for-next-job }}
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: internal-job-files
|
|
retention-days: 1
|
|
path: |
|
|
${{ env.STR_BUILD_DIR }}
|
|
GameFiles/Skyrim/
|