name: Build & Deploy Engine on: [push, pull_request] jobs: # cleanup: # runs-on: self-hosted # steps: # - name: Cleanup # run: rm -rf .* || true get_prev_runid: runs-on: ubuntu-latest outputs: value: ${{ steps.do.outputs.value }} steps: - id: do env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} run: | value=$(gh run -R ${{ github.repository }} list -b${{ github.ref_name }} -ssuccess -L1 --json databaseId -q'.[0].databaseId') echo "Last run ID is $value" echo "value=$value" >> "$GITHUB_OUTPUT" build: runs-on: ${{ matrix.os }} needs: get_prev_runid continue-on-error: true strategy: fail-fast: false matrix: include: # Linux build specifically want oldest Ubuntu as possible # to be crossdistribution compatible, otherwise use ubuntu-latest - os: ubuntu-20.04 targetos: linux targetarch: amd64 - os: ubuntu-20.04 targetos: linux targetarch: i386 - os: ubuntu-20.04 targetos: linux targetarch: arm64 cross: true - os: ubuntu-20.04 targetos: linux targetarch: armhf cross: true - os: ubuntu-20.04 targetos: linux targetarch: riscv64 cross: true - os: ubuntu-20.04 targetos: linux targetarch: ppc64el cross: true # - os: ubuntu-aarch64-20.04 # targetos: linux # targetarch: aarch64 - os: ubuntu-20.04 targetos: android targetarch: multiarch # - os: ubuntu-20.04 # targetos: motomagx # targetarch: armv6 - os: ubuntu-latest targetos: nswitch targetarch: arm64 - os: ubuntu-latest targetos: psvita targetarch: armv7hf - os: windows-latest targetos: win32 targetarch: amd64 - os: windows-2019 # always use the oldest possible for 32-bit because of older compilers, and better support of certain legacy OSes targetos: win32 targetarch: i386 - os: macos-14 # arm64 as per github documentation targetos: apple targetarch: arm64 - os: macos-13 # x86 as per github documentation (will they fix it before they deprecate this version?..) targetos: apple targetarch: amd64 env: SDL_VERSION: 2.30.11 GH_CPU_ARCH: ${{ matrix.targetarch }} GH_CROSSCOMPILING: ${{ matrix.cross }} WAFCACHE: ${{ github.workspace }}/wafcache/ WAFCACHE_EVICT_MAX_BYTES: 1000000 # github only gives 10gb for the whole repository WAFCACHE_STATS: 1 # enable statistics in build log steps: - name: Checkout uses: actions/checkout@v4 with: submodules: recursive - name: Restore cache uses: actions/cache/restore@v4 with: key: ${{ runner.os }}-${{ matrix.targetos }}-${{ matrix.targetarch }}-${{ needs.get_prev_runid.outputs.value }} path: ${{ github.workspace }}/wafcache/ - name: Install dependencies run: bash scripts/gha/deps_${{ matrix.targetos }}.sh - name: Build engine env: FWGS_PFX_PASSWORD: ${{ secrets.FWGS_PFX_PASSWORD }} run: bash scripts/gha/build_${{ matrix.targetos }}.sh - name: Upload engine (artifacts) uses: actions/upload-artifact@v4 with: name: artifact-${{ matrix.targetos }}-${{ matrix.targetarch }} path: artifacts/* - name: Save cache uses: actions/cache/save@v4 with: path: ${{ github.workspace }}/wafcache/ key: ${{ runner.os }}-${{ matrix.targetos }}-${{ matrix.targetarch }}-${{ github.run_id }} flatpak: runs-on: ubuntu-latest strategy: matrix: include: - app: su.xash.Engine.Compat.i386 container: image: bilelmoussaoui/flatpak-github-actions:freedesktop-24.08 options: --privileged steps: - name: Checkout uses: actions/checkout@v4 with: submodules: recursive - name: Build flatpak (Compat.i386) uses: FWGS/flatpak-github-actions/flatpak-builder@v6.3 with: bundle: ${{ matrix.app }}.flatpak manifest-path: scripts/flatpak/${{ matrix.app }}.yml release: name: "Upload releases" runs-on: ubuntu-latest needs: [build, flatpak] if: ${{ github.event_name == 'push' }} steps: - name: Remove old release, fetch artifacts, repackage binaries and upload new release env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} RELEASE_TAG: ${{ github.ref_name == 'master' && 'continuous' || format('continuous-{0}', github.ref_name) }} run: | gh release delete "$RELEASE_TAG" \ --yes \ --cleanup-tag \ --repo "$GITHUB_REPOSITORY" || true sleep 20s gh run download "$GITHUB_RUN_ID" \ --dir artifacts/ \ --repo "$GITHUB_REPOSITORY" pushd artifacts/ echo "Found artifacts:" ls for i in $(find -mindepth 1 -maxdepth 1 -type d); do mv "$i"/* . rm -rf "$i" done echo "Repackaged artifacts:" ls -R popd sleep 20s gh release create "$RELEASE_TAG" artifacts/* \ --title "Xash3D FWGS Continuous ${{ github.ref_name }} Build" \ --target $GITHUB_SHA \ --repo "$GITHUB_REPOSITORY" \ --prerelease