Skip to content

GameUpdate: 26/07/09 (#109) #126

GameUpdate: 26/07/09 (#109)

GameUpdate: 26/07/09 (#109) #126

Workflow file for this run

name: Master Build
on:
push:
branches:
- master
workflow_dispatch:
jobs:
prefetch:
permissions:
contents: write
runs-on: ubuntu-latest
outputs:
git_commit: ${{ steps.envvars.outputs.GITCOMMIT }}
github_sha_short: ${{ steps.envvars.outputs.GITHASH }}
date: ${{ steps.envvars.outputs.GITDATE }}
steps:
- name: Checkout
uses: actions/checkout@v5
with:
submodules: false
fetch-depth: 99999
- name: Set Timezone
uses: szenius/set-timezone@v2.0
with:
timezoneLinux: "Asia/Shanghai"
timezoneMacos: "Asia/Shanghai"
timezoneWindows: "China Standard Time"
- name: Make Environment Variables
id: envvars
run: |
DATETIME=$(date +"%Y/%m/%d %H:%M:%S")
COMMIT_VERSION=$(git rev-list --count HEAD)
COMMIT_HASH=$(git rev-parse --short HEAD)
echo $DATETIME
echo $COMMIT_VERSION
echo $COMMIT_HASH
echo "GITCOMMIT=$COMMIT_VERSION" >> $GITHUB_OUTPUT
echo "GITDATE=$DATETIME" >> $GITHUB_OUTPUT
echo "GITHASH=$COMMIT_HASH" >> $GITHUB_OUTPUT
windows:
needs: prefetch
runs-on: windows-2025
steps:
- name: Checkout
uses: actions/checkout@v5
with:
submodules: true
fetch-depth: 1
- name: Set Timezone
uses: szenius/set-timezone@v2.0
with:
timezoneLinux: "Asia/Shanghai"
timezoneMacos: "Asia/Shanghai"
timezoneWindows: "China Standard Time"
- name: Versioning
shell: bash
env:
GITCOMMIT: ${{ needs.prefetch.outputs.git_commit }}
GITDATE: ${{ needs.prefetch.outputs.date }}
GITHASH: ${{ needs.prefetch.outputs.github_sha_short }}
run: |
echo "#pragma once" > ./Engine/src/version_auto.h
echo "#define GIT_VERSION ${{env.GITCOMMIT}} " >> ./Engine/src/version_auto.h
echo "#define GIT_VERSION_STR \"${{env.GITCOMMIT}}\" " >> ./Engine/src/version_auto.h
echo "#define BUILD_DATE \"${{env.GITDATE}}\" " >> ./Engine/src/version_auto.h
echo "#define COMMIT_HASH \"${{env.GITHASH}}\" " >> ./Engine/src/version_auto.h
- name: Install .NET Core
uses: actions/setup-dotnet@v5
with:
dotnet-version: 10.0.x
- name: Setup MSBuild
uses: microsoft/setup-msbuild@v2
with:
msbuild-architecture: x64
- name: Prepare Build
shell: bash
run: |
mkdir ./build
mkdir ./build/sharp
mkdir ./build/sharp/bin
mkdir ./build/sharp/bin/win64
mkdir ./build/sharp/core
mkdir ./build/sharp/configs
mkdir ./build/sharp/gamedata
- name: Build Loader
shell: cmd
run: |
:: See https://github.com/microsoft/vswhere/wiki/Find-VC
for /f "usebackq delims=*" %%i in (`vswhere -latest -property installationPath`) do (
call "%%i"\Common7\Tools\vsdevcmd.bat -arch=x64 -host_arch=x64
)
:: Loop over all environment variables and make them global.
for /f "delims== tokens=1,2" %%a in ('set') do (
echo>>"%GITHUB_ENV%" %%a=%%b
)
set CURRENT_DIR=%CD%
msbuild Loader/Loader.vcxproj /p:Configuration=Release /p:Platform=x64 /p:OutDir=%CURRENT_DIR%/build/sharp/bin/win64/ /p:IntermediateOutputPath=./obj/ /p:Optimize=2
- name: Build Engine
shell: cmd
run: |
:: See https://github.com/microsoft/vswhere/wiki/Find-VC
for /f "usebackq delims=*" %%i in (`vswhere -latest -property installationPath`) do (
call "%%i"\Common7\Tools\vsdevcmd.bat -arch=x64 -host_arch=x64
)
:: Loop over all environment variables and make them global.
for /f "delims== tokens=1,2" %%a in ('set') do (
echo>>"%GITHUB_ENV%" %%a=%%b
)
set CURRENT_DIR=%CD%
msbuild Engine/ModSharp.vcxproj /p:Configuration=Release /p:Platform=x64 /p:OutDir=%CURRENT_DIR%/build/sharp/bin/ /p:IntermediateOutputPath=./obj/ /p:PreBuildEventUseInBuild=false /p:Optimize=2
- name: Build Sharp.Core
shell: bash
env:
GITCOMMIT: ${{ needs.prefetch.outputs.git_commit }}
run: dotnet publish Sharp.Core/Sharp.Core.csproj -f net10.0 -r win-x64 --no-self-contained -c Release --output ./build/sharp/core -p:VersionSuffix=${{env.GITCOMMIT}}
- name: Build Sharp.Extensions
shell: bash
env:
GITCOMMIT: ${{ needs.prefetch.outputs.git_commit }}
run: |
dotnet publish Sharp.Extensions/CommandManager/src/Sharp.Extensions.CommandManager.csproj -f net10.0 -r win-x64 --no-self-contained -c Release --output ./extensions/Sharp.Extensions.CommandManager -p:VersionSuffix=${{env.GITCOMMIT}}
dotnet publish Sharp.Extensions/GameEventManager/src/Sharp.Extensions.GameEventManager.csproj -f net10.0 -r win-x64 --no-self-contained -c Release --output ./extensions/Sharp.Extensions.GameEventManager -p:VersionSuffix=${{env.GITCOMMIT}}
dotnet publish Sharp.Extensions/EntityHookManager/src/Sharp.Extensions.EntityHookManager.csproj -f net10.0 -r win-x64 --no-self-contained -c Release --output ./extensions/Sharp.Extensions.EntityHookManager -p:VersionSuffix=${{env.GITCOMMIT}}
- name: Build Sharp.Modules
shell: bash
env:
GITCOMMIT: ${{ needs.prefetch.outputs.git_commit }}
run: |
dotnet publish Sharp.Modules/AdminCommands/src/Sharp.Modules.AdminCommands.csproj -f net10.0 -r win-x64 --no-self-contained -c Release --output ./build/sharp/modules/AdminCommands -p:VersionSuffix=${{env.GITCOMMIT}}
dotnet publish Sharp.Modules/AdminCommands.SQLStorage/AdminCommands.SQLStorage/Sharp.Modules.AdminCommands.SQLStorage.csproj -f net10.0 -r win-x64 --no-self-contained -c Release --output ./build/sharp/modules/AdminCommands.SQLStorage -p:VersionSuffix=${{env.GITCOMMIT}}
dotnet publish Sharp.Modules/AdminFlatFile/src/Sharp.Modules.AdminFlatFile.csproj -f net10.0 -r win-x64 --no-self-contained -c Release --output ./build/sharp/modules/AdminFlatFile -p:VersionSuffix=${{env.GITCOMMIT}}
dotnet publish Sharp.Modules/AdminManager/src/Sharp.Modules.AdminManager.csproj -f net10.0 -r win-x64 --no-self-contained -c Release --output ./build/sharp/modules/AdminManager -p:VersionSuffix=${{env.GITCOMMIT}}
dotnet publish Sharp.Modules/ClientPreferences/src/Sharp.Modules.ClientPreferences.csproj -f net10.0 -r win-x64 --no-self-contained -c Release --output ./build/sharp/modules/ClientPreferences -p:VersionSuffix=${{env.GITCOMMIT}}
dotnet publish Sharp.Modules/CommandCenter/src/Sharp.Modules.CommandCenter.csproj -f net10.0 -r win-x64 --no-self-contained -c Release --output ./build/sharp/modules/CommandCenter -p:VersionSuffix=${{env.GITCOMMIT}}
dotnet publish Sharp.Modules/EntityEnhancements/src/Sharp.Modules.EntityEnhancements.csproj -f net10.0 -r win-x64 --no-self-contained -c Release --output ./build/sharp/modules/EntityEnhancements -p:VersionSuffix=${{env.GITCOMMIT}}
dotnet publish Sharp.Modules/LocalizerManager/src/Sharp.Modules.LocalizerManager.csproj -f net10.0 -r win-x64 --no-self-contained -c Release --output ./build/sharp/modules/LocalizerManager -p:VersionSuffix=${{env.GITCOMMIT}}
dotnet publish Sharp.Modules/InputManager/src/Sharp.Modules.InputManager.csproj -f net10.0 -r win-x64 --no-self-contained -c Release --output ./build/sharp/modules/InputManager -p:VersionSuffix=${{env.GITCOMMIT}}
dotnet publish Sharp.Modules/MenuManager/src/Sharp.Modules.MenuManager.csproj -f net10.0 -r win-x64 --no-self-contained -c Release --output ./build/sharp/modules/MenuManager -p:VersionSuffix=${{env.GITCOMMIT}}
dotnet publish Sharp.Modules/TargetingManager/src/Sharp.Modules.TargetingManager.csproj -f net10.0 -r win-x64 --no-self-contained -c Release --output ./build/sharp/modules/TargetingManager -p:VersionSuffix=${{env.GITCOMMIT}}
- name: Build Sharp.Modules Shared Interface
shell: bash
env:
GITCOMMIT: ${{ needs.prefetch.outputs.git_commit }}
run: |
dotnet publish Sharp.Modules/AdminCommands/Shared/Sharp.Modules.AdminCommands.Shared.csproj -f net10.0 -r win-x64 --no-self-contained -c Release --output ./build/sharp/shared/Sharp.Modules.AdminCommands.Shared -p:VersionSuffix=${{env.GITCOMMIT}}
dotnet publish Sharp.Modules/AdminManager/Shared/Sharp.Modules.AdminManager.Shared.csproj -f net10.0 -r win-x64 --no-self-contained -c Release --output ./build/sharp/shared/Sharp.Modules.AdminManager.Shared -p:VersionSuffix=${{env.GITCOMMIT}}
dotnet publish Sharp.Modules/ClientPreferences/Shared/Sharp.Modules.ClientPreferences.Shared.csproj -f net10.0 -r win-x64 --no-self-contained -c Release --output ./build/sharp/shared/Sharp.Modules.ClientPreferences.Shared -p:VersionSuffix=${{env.GITCOMMIT}}
dotnet publish Sharp.Modules/CommandCenter/Shared/Sharp.Modules.CommandCenter.Shared.csproj -f net10.0 -r win-x64 --no-self-contained -c Release --output ./build/sharp/shared/Sharp.Modules.CommandCenter.Shared -p:VersionSuffix=${{env.GITCOMMIT}}
dotnet publish Sharp.Modules/LocalizerManager/Shared/Sharp.Modules.LocalizerManager.Shared.csproj -f net10.0 -r win-x64 --no-self-contained -c Release --output ./build/sharp/shared/Sharp.Modules.LocalizerManager.Shared -p:VersionSuffix=${{env.GITCOMMIT}}
dotnet publish Sharp.Modules/InputManager/Shared/Sharp.Modules.InputManager.Shared.csproj -f net10.0 -r win-x64 --no-self-contained -c Release --output ./build/sharp/shared/Sharp.Modules.InputManager.Shared -p:VersionSuffix=${{env.GITCOMMIT}}
dotnet publish Sharp.Modules/MenuManager/Shared/Sharp.Modules.MenuManager.Shared.csproj -f net10.0 -r win-x64 --no-self-contained -c Release --output ./build/sharp/shared/Sharp.Modules.MenuManager.Shared -p:VersionSuffix=${{env.GITCOMMIT}}
dotnet publish Sharp.Modules/TargetingManager/Shared/Sharp.Modules.TargetingManager.Shared.csproj -f net10.0 -r win-x64 --no-self-contained -c Release --output ./build/sharp/shared/Sharp.Modules.TargetingManager.Shared -p:VersionSuffix=${{env.GITCOMMIT}}
- name: Copy Assets
shell: bash
run: |
cp -r ./.asset/*/ ./build/sharp
touch ./build/sharp/modules/AdminCommands.SQLStorage/.disabled
- name: Upload ModSharp artifact
uses: actions/upload-artifact@v6
env:
GITCOMMIT: ${{ needs.prefetch.outputs.git_commit }}
with:
name: ModSharp-git${{env.GITCOMMIT}}-windows
path: ./build
if-no-files-found: error
retention-days: 30
- name: Upload Extensions artifact
uses: actions/upload-artifact@v6
env:
GITCOMMIT: ${{ needs.prefetch.outputs.git_commit }}
with:
name: ModSharp-git${{env.GITCOMMIT}}-windows-extensions
path: ./extensions
if-no-files-found: error
retention-days: 30
linux:
needs: prefetch
runs-on: ubuntu-latest
container:
image: registry.gitlab.steamos.cloud/steamrt/sniper/sdk:latest
env:
CC: clang-21
CXX: clang++-21
steps:
- name: Install Clang 21
run: |
apt update
apt install -y wget gnupg
wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add -
echo "deb http://apt.llvm.org/bullseye/ llvm-toolchain-bullseye-21 main" >> /etc/apt/sources.list
echo "deb-src http://apt.llvm.org/bullseye/ llvm-toolchain-bullseye-21 main" >> /etc/apt/sources.list
apt update
apt install -y clang-21
echo "CPLUS_INCLUDE_PATH=/usr/lib/gcc-14/x86_64-linux-gnu/include/c++/14:/usr/lib/gcc-14/x86_64-linux-gnu/include/c++/14/x86_64-linux-gnu:/usr/lib/gcc-14/x86_64-linux-gnu/include/c++/14/backward" >> $GITHUB_ENV
echo "LIBRARY_PATH=/usr/lib/gcc-14/lib/gcc/x86_64-linux-gnu/14" >> $GITHUB_ENV
echo "LD_LIBRARY_PATH=/usr/lib/gcc-14/lib/gcc/x86_64-linux-gnu/14" >> $GITHUB_ENV
- name: Set Timezone
uses: szenius/set-timezone@v2.0
with:
timezoneLinux: "Asia/Shanghai"
timezoneMacos: "Asia/Shanghai"
timezoneWindows: "China Standard Time"
- name: Mark repository as safe
run: git config --global --add safe.directory $GITHUB_WORKSPACE
- name: Checkout
uses: actions/checkout@v5
with:
submodules: true
fetch-depth: 1
- name: Versioning
shell: bash
env:
GITCOMMIT: ${{ needs.prefetch.outputs.git_commit }}
GITDATE: ${{ needs.prefetch.outputs.date }}
GITHASH: ${{ needs.prefetch.outputs.github_sha_short }}
run: |
echo "#pragma once" > ./Engine/src/version_auto.h
echo "#define GIT_VERSION ${{env.GITCOMMIT}} " >> ./Engine/src/version_auto.h
echo "#define GIT_VERSION_STR \"${{env.GITCOMMIT}}\" " >> ./Engine/src/version_auto.h
echo "#define BUILD_DATE \"${{env.GITDATE}}\" " >> ./Engine/src/version_auto.h
echo "#define COMMIT_HASH \"${{env.GITHASH}}\" " >> ./Engine/src/version_auto.h
- name: Install .NET Core
uses: actions/setup-dotnet@v5
with:
dotnet-version: 10.x
- name: Prepare Build
shell: bash
run: |
mkdir ./build
mkdir ./build/sharp
mkdir ./build/sharp/bin
mkdir ./build/sharp/bin/linuxsteamrt64
mkdir ./build/sharp/core
mkdir ./build/sharp/configs
mkdir ./build/sharp/gamedata
# Build Loader
- name: Build Loader
working-directory: Loader
run: |
cmake -P cmkr.cmake
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -- -j$(nproc)
# Build Engine
- name: Build Engine
working-directory: Engine
run: |
cmake -P cmkr.cmake
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build -- -j$(nproc)
- name: Build Sharp.Core
shell: bash
env:
GITCOMMIT: ${{ needs.prefetch.outputs.git_commit }}
run: dotnet publish Sharp.Core/Sharp.Core.csproj -f net10.0 -r linux-x64 --no-self-contained -c Release --output ./build/sharp/core -p:VersionSuffix=${{env.GITCOMMIT}}
- name: Build Sharp.Extensions
shell: bash
env:
GITCOMMIT: ${{ needs.prefetch.outputs.git_commit }}
run: |
dotnet publish Sharp.Extensions/CommandManager/src/Sharp.Extensions.CommandManager.csproj -f net10.0 -r linux-x64 --no-self-contained -c Release --output ./extensions/Sharp.Extensions.CommandManager -p:VersionSuffix=${{env.GITCOMMIT}}
dotnet publish Sharp.Extensions/GameEventManager/src/Sharp.Extensions.GameEventManager.csproj -f net10.0 -r linux-x64 --no-self-contained -c Release --output ./extensions/Sharp.Extensions.GameEventManager -p:VersionSuffix=${{env.GITCOMMIT}}
dotnet publish Sharp.Extensions/EntityHookManager/src/Sharp.Extensions.EntityHookManager.csproj -f net10.0 -r linux-x64 --no-self-contained -c Release --output ./extensions/Sharp.Extensions.EntityHookManager -p:VersionSuffix=${{env.GITCOMMIT}}
- name: Build Sharp.Modules
shell: bash
env:
GITCOMMIT: ${{ needs.prefetch.outputs.git_commit }}
run: |
dotnet publish Sharp.Modules/AdminCommands/src/Sharp.Modules.AdminCommands.csproj -f net10.0 -r linux-x64 --no-self-contained -c Release --output ./build/sharp/modules/AdminCommands -p:VersionSuffix=${{env.GITCOMMIT}}
dotnet publish Sharp.Modules/AdminCommands.SQLStorage/AdminCommands.SQLStorage/Sharp.Modules.AdminCommands.SQLStorage.csproj -f net10.0 -r linux-x64 --no-self-contained -c Release --output ./build/sharp/modules/AdminCommands.SQLStorage -p:VersionSuffix=${{env.GITCOMMIT}}
dotnet publish Sharp.Modules/AdminFlatFile/src/Sharp.Modules.AdminFlatFile.csproj -f net10.0 -r linux-x64 --no-self-contained -c Release --output ./build/sharp/modules/AdminFlatFile -p:VersionSuffix=${{env.GITCOMMIT}}
dotnet publish Sharp.Modules/AdminManager/src/Sharp.Modules.AdminManager.csproj -f net10.0 -r linux-x64 --no-self-contained -c Release --output ./build/sharp/modules/AdminManager -p:VersionSuffix=${{env.GITCOMMIT}}
dotnet publish Sharp.Modules/ClientPreferences/src/Sharp.Modules.ClientPreferences.csproj -f net10.0 -r linux-x64 --no-self-contained -c Release --output ./build/sharp/modules/ClientPreferences -p:VersionSuffix=${{env.GITCOMMIT}}
dotnet publish Sharp.Modules/CommandCenter/src/Sharp.Modules.CommandCenter.csproj -f net10.0 -r linux-x64 --no-self-contained -c Release --output ./build/sharp/modules/CommandCenter -p:VersionSuffix=${{env.GITCOMMIT}}
dotnet publish Sharp.Modules/EntityEnhancements/src/Sharp.Modules.EntityEnhancements.csproj -f net10.0 -r linux-x64 --no-self-contained -c Release --output ./build/sharp/modules/EntityEnhancements -p:VersionSuffix=${{env.GITCOMMIT}}
dotnet publish Sharp.Modules/LocalizerManager/src/Sharp.Modules.LocalizerManager.csproj -f net10.0 -r linux-x64 --no-self-contained -c Release --output ./build/sharp/modules/LocalizerManager -p:VersionSuffix=${{env.GITCOMMIT}}
dotnet publish Sharp.Modules/InputManager/src/Sharp.Modules.InputManager.csproj -f net10.0 -r linux-x64 --no-self-contained -c Release --output ./build/sharp/modules/InputManager -p:VersionSuffix=${{env.GITCOMMIT}}
dotnet publish Sharp.Modules/MenuManager/src/Sharp.Modules.MenuManager.csproj -f net10.0 -r linux-x64 --no-self-contained -c Release --output ./build/sharp/modules/MenuManager -p:VersionSuffix=${{env.GITCOMMIT}}
dotnet publish Sharp.Modules/TargetingManager/src/Sharp.Modules.TargetingManager.csproj -f net10.0 -r linux-x64 --no-self-contained -c Release --output ./build/sharp/modules/TargetingManager -p:VersionSuffix=${{env.GITCOMMIT}}
- name: Build Sharp.Modules Shared Interface
shell: bash
env:
GITCOMMIT: ${{ needs.prefetch.outputs.git_commit }}
run: |
dotnet publish Sharp.Modules/AdminCommands/Shared/Sharp.Modules.AdminCommands.Shared.csproj -f net10.0 -r linux-x64 --no-self-contained -c Release --output ./build/sharp/shared/Sharp.Modules.AdminCommands.Shared -p:VersionSuffix=${{env.GITCOMMIT}}
dotnet publish Sharp.Modules/AdminManager/Shared/Sharp.Modules.AdminManager.Shared.csproj -f net10.0 -r linux-x64 --no-self-contained -c Release --output ./build/sharp/shared/Sharp.Modules.AdminManager.Shared -p:VersionSuffix=${{env.GITCOMMIT}}
dotnet publish Sharp.Modules/ClientPreferences/Shared/Sharp.Modules.ClientPreferences.Shared.csproj -f net10.0 -r linux-x64 --no-self-contained -c Release --output ./build/sharp/shared/Sharp.Modules.ClientPreferences.Shared -p:VersionSuffix=${{env.GITCOMMIT}}
dotnet publish Sharp.Modules/CommandCenter/Shared/Sharp.Modules.CommandCenter.Shared.csproj -f net10.0 -r linux-x64 --no-self-contained -c Release --output ./build/sharp/shared/Sharp.Modules.CommandCenter.Shared -p:VersionSuffix=${{env.GITCOMMIT}}
dotnet publish Sharp.Modules/LocalizerManager/Shared/Sharp.Modules.LocalizerManager.Shared.csproj -f net10.0 -r linux-x64 --no-self-contained -c Release --output ./build/sharp/shared/Sharp.Modules.LocalizerManager.Shared -p:VersionSuffix=${{env.GITCOMMIT}}
dotnet publish Sharp.Modules/InputManager/Shared/Sharp.Modules.InputManager.Shared.csproj -f net10.0 -r linux-x64 --no-self-contained -c Release --output ./build/sharp/shared/Sharp.Modules.InputManager.Shared -p:VersionSuffix=${{env.GITCOMMIT}}
dotnet publish Sharp.Modules/MenuManager/Shared/Sharp.Modules.MenuManager.Shared.csproj -f net10.0 -r linux-x64 --no-self-contained -c Release --output ./build/sharp/shared/Sharp.Modules.MenuManager.Shared -p:VersionSuffix=${{env.GITCOMMIT}}
dotnet publish Sharp.Modules/TargetingManager/Shared/Sharp.Modules.TargetingManager.Shared.csproj -f net10.0 -r linux-x64 --no-self-contained -c Release --output ./build/sharp/shared/Sharp.Modules.TargetingManager.Shared -p:VersionSuffix=${{env.GITCOMMIT}}
- name: Copy Assets
shell: bash
run: |
cp -r ./.asset/*/ ./build/sharp
cp -r ./Engine/build/libmodsharp.so ./build/sharp/bin/libmodsharp.so
cp -r ./Loader/build/libserver.so ./build/sharp/bin/linuxsteamrt64/libserver.so
touch ./build/sharp/modules/AdminCommands.SQLStorage/.disabled
- name: Upload ModSharp artifact
uses: actions/upload-artifact@v6
env:
GITCOMMIT: ${{ needs.prefetch.outputs.git_commit }}
with:
name: ModSharp-git${{env.GITCOMMIT}}-linux
path: ./build
if-no-files-found: error
retention-days: 30
- name: Upload Extensions artifact
uses: actions/upload-artifact@v6
env:
GITCOMMIT: ${{ needs.prefetch.outputs.git_commit }}
with:
name: ModSharp-git${{env.GITCOMMIT}}-linux-extensions
path: ./extensions
if-no-files-found: error
retention-days: 30