From 5c664fca1cd9712488e5be2b9cca5d79a0155dcb Mon Sep 17 00:00:00 2001 From: Myk Taylor Date: Mon, 31 Jul 2023 01:49:02 -0700 Subject: [PATCH] reuse workflows for steam --- .github/workflows/build-linux.yml | 4 + .github/workflows/build-windows.yml | 57 ++++++---- .github/workflows/build.yml | 45 +------- .github/workflows/steam.yml | 164 +++++++++------------------- 4 files changed, 94 insertions(+), 176 deletions(-) diff --git a/.github/workflows/build-linux.yml b/.github/workflows/build-linux.yml index a32c4b474..77906bbd4 100644 --- a/.github/workflows/build-linux.yml +++ b/.github/workflows/build-linux.yml @@ -3,6 +3,9 @@ name: build-linux on: workflow_call: inputs: + ref: + type: string + default: '' artifact-name: type: string append-date-and-hash: @@ -56,6 +59,7 @@ jobs: - name: Clone DFHack uses: actions/checkout@v3 with: + ref: ${{ inputs.ref }} submodules: true fetch-depth: ${{ !inputs.platform-files && 1 || 0 }} - name: Fetch ccache diff --git a/.github/workflows/build-windows.yml b/.github/workflows/build-windows.yml index 27c5b28a0..b5a96b12d 100644 --- a/.github/workflows/build-windows.yml +++ b/.github/workflows/build-windows.yml @@ -3,6 +3,9 @@ name: build-windows on: workflow_call: inputs: + ref: + type: string + default: '' artifact-name: type: string append-date-and-hash: @@ -14,40 +17,52 @@ on: common-files: type: boolean default: true + launchdf: + type: boolean + default: false jobs: build-win64: name: Build win64 - runs-on: windows-latest + runs-on: ubuntu-22.04 steps: - - run: pip install clcache - - run: pip install 'sphinx<4.4.0' - if: inputs.common-files - - name: Fetch clcache + - name: Install dependencies + run: | + sudo apt-get update + sudo apt-get install ccache + - name: Clone DFHack + uses: actions/checkout@v3 + with: + ref: ${{ inputs.ref }} + submodules: true + fetch-depth: 0 + - name: Get 3rd party SDKs + if: inputs.launchdf + uses: actions/checkout@v3 + with: + repository: DFHack/3rdparty + ref: main + ssh-key: ${{ secrets.DFHACK_3RDPARTY_TOKEN }} + path: depends/steam + - name: Fetch ccache uses: actions/cache@v3 with: - path: clcache + path: build/win64-cross/ccache key: win-msvc-${{ inputs.cache-id }}-${{ github.sha }} restore-keys: | win-msvc-${{ inputs.cache-id }} win-msvc - - name: Clone DFHack - uses: actions/checkout@v3 - with: - submodules: true - fetch-depth: 0 - - name: Configure DFHack + - name: Cross-compile env: - CC: clcache - CXX: clcache - run: cmake -S . -B build -G "Visual Studio 17 2022" -DCMAKE_INSTALL_PREFIX=build/image -DBUILD_STONESENSE:BOOL=1 -DBUILD_DOCS:BOOL=${{ inputs.common-files }} -DINSTALL_DATA_FILES:BOOL=${{ inputs.common-files }} -DINSTALL_SCRIPTS:BOOL=${{ inputs.common-files }} - - name: Build DFHack - run: cmake --build build -j 2 --config Release --target install + CMAKE_EXTRA_ARGS: '-DBUILD_STONESENSE:BOOL=1 -DBUILD_DOCS:BOOL=${{ inputs.common-files }} -DINSTALL_DATA_FILES:BOOL=${{ inputs.common-files }} -DINSTALL_SCRIPTS:BOOL=${{ inputs.common-files }} -DBUILD_DFLAUNCH:BOOL=${{ inputs.launchdf }}' + run: | + cd build + bash -x build-win64-from-linux.sh - name: Trim cache run: | - clcache -M 52428800 - clcache -c - clcache -s + ccache -d win64-cross/ccache --max-size 50M + ccache -d win64-cross/ccache --cleanup + ccache -d win64-cross/ccache --show-stats --verbose - name: Format artifact name if: inputs.append-date-and-hash id: artifactname @@ -57,4 +72,4 @@ jobs: uses: actions/upload-artifact@v3 with: name: ${{ inputs.append-date-and-hash && steps.artifactname.outputs.name || inputs.artifact-name }} - path: build/image/* + path: build/win64-cross/output/* diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 7ff1b08c2..648fd3838 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -75,7 +75,7 @@ jobs: name: Linux package uses: ./.github/workflows/build-linux.yml with: - artifact-name: dfhack-linux64 + artifact-name: dfhack-linux64-build append-date-and-hash: true cache-id: release stonesense: true @@ -84,53 +84,14 @@ jobs: secrets: inherit package-win64: - name: Win64 package (native) + name: Win64 package uses: ./.github/workflows/build-windows.yml with: - artifact-name: dfhack-win64 + artifact-name: dfhack-win64-build append-date-and-hash: true cache-id: msvc secrets: inherit - build-cross-win64: - name: Win64 package - runs-on: ubuntu-22.04 - steps: - - name: Install dependencies - run: | - sudo apt-get update - sudo apt-get install ccache - - name: Clone DFHack - uses: actions/checkout@v3 - with: - submodules: true - fetch-depth: 0 - - name: Fetch ccache - uses: actions/cache@v3 - with: - path: build/win64-cross/ccache - key: ccache-win64-cross-msvc-${{ github.sha }} - restore-keys: | - ccache-win64-cross-msvc - - name: Cross-compile win64 - env: - CMAKE_EXTRA_ARGS: '-DBUILD_STONESENSE:BOOL=1' - run: | - cd build - bash -x build-win64-from-linux.sh - ccache -d win64-cross/ccache --max-size 200M - ccache -d win64-cross/ccache --cleanup - ccache -d win64-cross/ccache --show-stats - - name: Format artifact name - id: artifactname - run: | - echo name=$(date +%Y%m%d)-$(git rev-parse --short HEAD) >> $GITHUB_OUTPUT - - name: Upload artifact - uses: actions/upload-artifact@v3 - with: - name: dfhack-win64-build-${{ steps.artifactname.outputs.name }} - path: build/win64-cross/output/* - docs: uses: ./.github/workflows/build-linux.yml with: diff --git a/.github/workflows/steam.yml b/.github/workflows/steam.yml index d57fa00ac..6d4533ee9 100644 --- a/.github/workflows/steam.yml +++ b/.github/workflows/steam.yml @@ -13,127 +13,65 @@ on: type: string required: true release_channel: - description: Release channel + description: Steam release channel type: string required: true default: staging jobs: + depot-common: + name: Common depot files + uses: ./.github/workflows/build-linux.yml + with: + artifact-name: common-depot + ref: ${{ github.event.inputs.ref }} + platform-files: false + docs: true + stonesense: true + secrets: inherit + + depot-linux: + name: Linux depot files + uses: ./.github/workflows/build-linux.yml + with: + artifact-name: linux64-depot + ref: ${{ github.event.inputs.ref }} + cache-id: depot + common-files: false + stonesense: true + gcc-ver: "10" + secrets: inherit + + depot-win64: + name: Windows depot files + uses: ./.github/workflows/build-windows.yml + with: + artifact-name: win64-depot + ref: ${{ github.event.inputs.ref }} + cache-id: msvc + common-files: false + launchdf: true + secrets: inherit + deploy-to-steam: name: Deploy to Steam - runs-on: ubuntu-22.04 + runs-on: ubuntu-latest steps: - - name: Set up Python 3 - uses: actions/setup-python@v4 - with: - python-version: 3 - - name: Install dependencies - run: | - sudo apt-get update - sudo apt-get install \ - ccache \ - gcc-10 \ - g++-10 \ - libgl-dev \ - libxml-libxslt-perl \ - ninja-build - pip install 'sphinx<4.4.0' - - name: Clone DFHack - uses: actions/checkout@v3 - with: - submodules: true - fetch-depth: 0 - ref: ${{ github.event.inputs.ref }} - - name: Get 3rd party SDKs - uses: actions/checkout@v3 + - name: Stage common depot files + uses: actions/download-artifact@v3 with: - repository: DFHack/3rdparty - ref: main - ssh-key: ${{ secrets.DFHACK_3RDPARTY_TOKEN }} - path: depends/steam - - name: Fetch linux64 ccache - uses: actions/cache@v3 + name: common-depot + path: common + - name: Stage linux64 depot files + uses: actions/download-artifact@v3 with: - path: ~/.ccache - key: ccache-ubuntu-22.04-gcc-10-${{ github.sha }} - restore-keys: | - ccache-ubuntu-22.04-gcc-10 - - name: Fetch win64 ccache - uses: actions/cache@v3 + name: linux64-depot + path: linux64 + - name: Stage win64 depot files + uses: actions/download-artifact@v3 with: - path: build/win64-cross/ccache - key: ccache-win64-cross-msvc-${{ github.sha }} - restore-keys: | - ccache-win64-cross-msvc - - name: Set up environment - id: env_setup - run: | - echo "CCACHE_DIR=${HOME}/.ccache" >> $GITHUB_ENV - - name: Configure DFHack (common files) - env: - CC: gcc-10 - CXX: g++-10 - run: | - cmake \ - -S . \ - -B build \ - -G Ninja \ - -DCMAKE_INSTALL_PREFIX=build/common-output \ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_C_COMPILER_LAUNCHER=ccache \ - -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ - -DDFHACK_BUILD_ARCH=64 \ - -DBUILD_DOCS:BOOL=1 \ - -DBUILD_LIBRARY:BOOL=0 \ - -DBUILD_PLUGINS:BOOL=0 \ - -DBUILD_STONESENSE:BOOL=1 \ - -DINSTALL_DATA_FILES:BOOL=1 \ - -DINSTALL_SCRIPTS:BOOL=1 - - name: Build DFHack (common files) - run: | - ninja -C build install - - name: Configure DFHack (linux build) - env: - CC: gcc-10 - CXX: g++-10 - run: | - cmake \ - -S . \ - -B build \ - -G Ninja \ - -DCMAKE_INSTALL_PREFIX=build/linux-output \ - -DCMAKE_BUILD_TYPE=Release \ - -DCMAKE_C_COMPILER_LAUNCHER=ccache \ - -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ - -DDFHACK_BUILD_ARCH=64 \ - -DBUILD_DOCS:BOOL=0 \ - -DBUILD_LIBRARY:BOOL=1 \ - -DBUILD_PLUGINS:BOOL=1 \ - -DBUILD_STONESENSE:BOOL=1 \ - -DINSTALL_DATA_FILES:BOOL=0 \ - -DINSTALL_SCRIPTS:BOOL=0 - - name: Build DFHack (linux build) - run: | - ninja -C build install - ccache --max-size 50M - ccache --cleanup - ccache --show-stats - - name: Cross-compile win64 artifacts - env: - CMAKE_EXTRA_ARGS: '-DBUILD_STONESENSE:BOOL=1 -DBUILD_DFLAUNCH:BOOL=1 -DBUILD_DOCS:BOOL=0 -DINSTALL_DATA_FILES:BOOL=0 -DINSTALL_SCRIPTS:BOOL=0' - steam_username: ${{ secrets.STEAM_SDK_USERNAME }} - steam_password: ${{ secrets.STEAM_SDK_PASSWORD }} - run: | - echo "ref: ${{ github.event.inputs.ref }}" - echo "sha: ${{ github.sha }}" - echo "version: ${{ github.event.inputs.version }}" - echo "release_channel: ${{ github.event.inputs.release_channel }}" - echo - cd build - bash -x build-win64-from-linux.sh - ccache -d win64-cross/ccache --max-size 200M - ccache -d win64-cross/ccache --cleanup - ccache -d win64-cross/ccache --show-stats + name: win64-depot + path: win64 - name: Steam deploy uses: game-ci/steam-deploy@v3 with: @@ -142,7 +80,7 @@ jobs: appId: 2346660 buildDescription: ${{ github.event.inputs.version }} rootPath: build - depot1Path: common-output - depot2Path: win64-cross/output - depot3Path: linux-output + depot1Path: common + depot2Path: win64 + depot3Path: linux64 releaseBranch: ${{ github.event.inputs.release_channel }}