name: Build & Deploy Engine on: [push, pull_request] jobs: # cleanup: # runs-on: self-hosted # steps: # - name: Cleanup # run: rm -rf .* || true build: runs-on: ${{ matrix.os }} 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.32.0 GH_CPU_ARCH: ${{ matrix.targetarch }} GH_CROSSCOMPILING: ${{ matrix.cross }} steps: - name: Checkout uses: actions/checkout@v4 with: submodules: recursive - 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/* flatpak: runs-on: ubuntu-latest continue-on-error: true 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-fix 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 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