Skip to content

Engine update

Engine update #381

Workflow file for this run

name: build
on:
push:
branches:
- master
pull_request:
branches:
- master
permissions:
contents: read
concurrency:
group: build-${{ github.event_name }}-${{ github.ref }}
cancel-in-progress: ${{ github.event_name != 'push' || github.ref != 'refs/heads/master' }}
jobs:
check-formatting:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v6
- uses: DoozyX/clang-format-lint-action@v0.20
with:
source: ./Scripts ./SourceExt
exclude: ./SourceExt/SHA
extensions: 'fos,h,cpp'
clangFormatVersion: 20
unit-tests:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v6
with:
submodules: recursive
- run: Engine/BuildTools/prepare-workspace.sh packages linux
- run: Engine/BuildTools/validate.sh unit-tests
compile-scripts:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v6
with:
submodules: recursive
- run: Engine/BuildTools/prepare-workspace.sh packages linux toolset
- run: Engine/BuildTools/toolset.sh CompileAngelScript
bake-resources:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v6
with:
submodules: recursive
- run: Engine/BuildTools/prepare-workspace.sh packages linux toolset
- run: Engine/BuildTools/toolset.sh BakeResources
- run: cd Workspace/output && tar -cf Baking.tar Baking
- uses: actions/upload-artifact@v6
with:
name: Baking
path: Workspace/output/Baking.tar
if-no-files-found: error
retention-days: 1
windows-build:
runs-on: windows-2025-vs2026
strategy:
fail-fast: false
matrix:
app:
- win32 client Release
- win64 client Release
- win64 server Release
- win64 editor Release
- win64 mapper Release
- win64 baker Release
- win64 client Profiling_Total
- win64 server Profiling_Total
steps:
- uses: actions/checkout@v6
with:
submodules: recursive
- run: Engine/BuildTools/build.cmd ${{matrix.app}}
- uses: actions/upload-artifact@v6
with:
name: Binaries-${{matrix.app}}
path: |
Workspace/output/*Binaries/Client*
Workspace/output/*Binaries/Server*
Workspace/output/*Binaries/Editor*
Workspace/output/*Binaries/Mapper*
Workspace/output/*Binaries/Baker*
if-no-files-found: error
retention-days: 1
linux-build:
runs-on: ubuntu-24.04
strategy:
fail-fast: false
matrix:
app:
- linux client Release
- android-arm32 client Release
- android-arm64 client Release
- web client Release
- linux server Release
- linux editor Release
- linux mapper Release
steps:
- uses: actions/checkout@v6
with:
submodules: recursive
- run: Engine/BuildTools/prepare-workspace.sh packages ${{matrix.app}}
- run: Engine/BuildTools/build.sh ${{matrix.app}}
- uses: actions/upload-artifact@v6
with:
name: Binaries-${{matrix.app}}
path: |
Workspace/output/*Binaries/Client*
Workspace/output/*Binaries/Server*
Workspace/output/*Binaries/Editor*
Workspace/output/*Binaries/Mapper*
if-no-files-found: error
retention-days: 1
macos-build:
runs-on: macos-26-intel
strategy:
fail-fast: false
matrix:
app:
- mac client Release
- ios client Release
steps:
- uses: actions/checkout@v6
with:
submodules: recursive
- run: Engine/BuildTools/build.sh ${{matrix.app}}
- uses: actions/upload-artifact@v6
with:
name: Binaries-${{matrix.app}}
path: |
Workspace/output/*Binaries/Client*
if-no-files-found: error
retention-days: 1
package:
runs-on: ubuntu-24.04
needs: [check-formatting, unit-tests, compile-scripts, bake-resources, windows-build, linux-build, macos-build]
steps:
- uses: actions/checkout@v6
with:
submodules: recursive
- uses: actions/download-artifact@v7
with:
pattern: Binaries-*
merge-multiple: true
path: Workspace/output
- uses: actions/download-artifact@v7
with:
name: Baking
path: Workspace/output
- run: cd Workspace/output && tar -xf Baking.tar
- run: cd Workspace/output && tree -d
- run: Engine/BuildTools/prepare-workspace.sh packages linux toolset
- run: Engine/BuildTools/toolset.sh MakePackage-Dev
- run: Engine/BuildTools/toolset.sh MakePackage-Test
- uses: actions/upload-artifact@v6
with:
name: TLA-Dev
path: Workspace/output/TLA-Dev
if-no-files-found: error
retention-days: 1
- uses: actions/upload-artifact@v6
with:
name: TLA-Test
path: Workspace/output/TLA-Test
if-no-files-found: error
retention-days: 1
- run: mv Workspace/output/TLA-Dev/TLA-Dev.zip TLA-Dev.zip
- run: (cd Workspace/output/TLA-Test/TLA-Server-LocalTest && zip -0 -q -r - .) > TLA-Server.zip
- run: (cd Workspace/output/TLA-Test/TLA-Client-LocalTest && zip -0 -q -r - .) > TLA-Client.zip
- uses: actions/upload-artifact@v6
with:
name: TLA-Release
path: |
TLA-Dev.zip
TLA-Server.zip
TLA-Client.zip
if-no-files-found: error
retention-days: 7
release:
runs-on: ubuntu-24.04
needs: package
permissions:
contents: write
steps:
- uses: actions/checkout@v6
with:
fetch-depth: 0
fetch-tags: true
- uses: actions/download-artifact@v7
with:
name: TLA-Release
path: .
- name: Prepare release metadata
id: release_version
shell: bash
run: |
set -euo pipefail
publish="${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }}"
version="$(tr -d '[:space:]' < VERSION)"
if [[ ! "$version" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
echo "::error file=VERSION::Unexpected VERSION format: $version"
exit 1
fi
tag="v$version"
if git rev-parse --quiet --verify "refs/tags/$tag" >/dev/null; then
if [[ "$publish" == "true" ]]; then
echo "::error file=VERSION::Release tag $tag already exists. Bump VERSION before publishing a new release."
exit 1
fi
echo "::warning file=VERSION::Release tag $tag already exists. A master publish would fail until VERSION is bumped."
fi
previous_tag="$(git tag --list 'v[0-9]*.[0-9]*.[0-9]*' --sort=-v:refname | grep -F -x -v "$tag" | head -n 1 || true)"
echo "Release mode: $([[ "$publish" == "true" ]] && echo publish || echo dry-run)"
echo "Version: $version"
echo "Tag: $tag"
echo "Previous tag: ${previous_tag:-<none>}"
for file in TLA-Dev.zip TLA-Server.zip TLA-Client.zip; do
if [[ ! -s "$file" ]]; then
echo "::error file=$file::Missing or empty release asset"
exit 1
fi
ls -lh "$file"
sha256sum "$file"
done
{
echo "### Release $([[ "$publish" == "true" ]] && echo publish || echo dry-run)"
echo
echo "| Field | Value |"
echo "| ----- | ----- |"
echo "| Event | \`${{ github.event_name }}\` |"
echo "| Ref | \`${{ github.ref }}\` |"
echo "| Version | \`$version\` |"
echo "| Tag | \`$tag\` |"
echo "| Previous tag | \`${previous_tag:-none}\` |"
echo "| Assets | \`TLA-Dev.zip\`, \`TLA-Server.zip\`, \`TLA-Client.zip\` |"
if [[ "$publish" != "true" ]]; then
echo
echo "Dry-run only: no GitHub release or tag will be created in this run."
fi
} >> "$GITHUB_STEP_SUMMARY"
{
echo "version=$version"
echo "tag=$tag"
echo "previous_tag=$previous_tag"
echo "publish=$publish"
} >> "$GITHUB_OUTPUT"
- name: Dry-run release
if: steps.release_version.outputs.publish != 'true'
shell: bash
run: |
set -euo pipefail
echo "Dry-run only: validated release metadata and assets."
echo "A push to master would create release '${{ steps.release_version.outputs.tag }}' from commit '${{ github.sha }}'."
echo "Release assets:"
ls -lh TLA-Dev.zip TLA-Server.zip TLA-Client.zip
- uses: softprops/action-gh-release@v2
if: steps.release_version.outputs.publish == 'true'
with:
tag_name: ${{ steps.release_version.outputs.tag }}
name: "FOnline: The Life After ${{ steps.release_version.outputs.version }}"
target_commitish: ${{ github.sha }}
generate_release_notes: true
previous_tag: ${{ steps.release_version.outputs.previous_tag }}
make_latest: true
fail_on_unmatched_files: true
overwrite_files: false
files: |
TLA-Dev.zip
TLA-Server.zip
TLA-Client.zip