Merge remote-tracking branch 'Rebmiami/paper' into playtest-june2025 #35
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: build | |
| on: | |
| push: | |
| branches: | |
| - '*' | |
| tags: | |
| - 'v*.*' | |
| - 'snapshot-*' | |
| - 'tptlibsdev-*' | |
| pull_request: | |
| branches: | |
| - '*' | |
| jobs: | |
| prepare: | |
| runs-on: ubuntu-24.04 | |
| outputs: | |
| do_release: ${{ steps.prepare.outputs.do_release }} | |
| build_matrix: ${{ steps.prepare.outputs.build_matrix }} | |
| publish_matrix: ${{ steps.prepare.outputs.publish_matrix }} | |
| release_type: ${{ steps.prepare.outputs.release_type }} | |
| release_name: ${{ steps.prepare.outputs.release_name }} | |
| mod_id: ${{ steps.prepare.outputs.mod_id }} | |
| app_name: ${{ steps.prepare.outputs.app_name }} | |
| app_comment: ${{ steps.prepare.outputs.app_comment }} | |
| app_exe: ${{ steps.prepare.outputs.app_exe }} | |
| app_id: ${{ steps.prepare.outputs.app_id }} | |
| app_data: ${{ steps.prepare.outputs.app_data }} | |
| app_vendor: ${{ steps.prepare.outputs.app_vendor }} | |
| do_publish: ${{ steps.prepare.outputs.do_publish }} | |
| steps: | |
| - run: git config --global core.autocrlf false | |
| - uses: actions/checkout@v4 | |
| - uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.10' | |
| - run: python -m pip install meson ninja | |
| - id: prepare | |
| run: python ./.github/prepare.py | |
| env: | |
| PUBLISH_HOSTPORT: ${{ vars.STARCATCHER_PUBLISH_HOSTPORT }} | |
| GITHUB_REF: ${{ github.ref }} | |
| - if: steps.prepare.outputs.do_publish == 'yes' | |
| run: bash -c './.github/starcatcher-publish.sh' | |
| env: | |
| PUBLISH_HOSTPORT: ${{ vars.STARCATCHER_PUBLISH_HOSTPORT }} | |
| PUBLISH_USERNAME: ${{ vars.STARCATCHER_PUBLISH_USERNAME }} | |
| PUBLISH_PASSWORD: ${{ secrets.STARCATCHER_PUBLISH_PASSWORD }} | |
| PUBLISH_ACCESSCHECK: yes | |
| - if: steps.prepare.outputs.do_release == 'yes' | |
| id: create_release | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| RELEASE_NAME: ${{ steps.prepare.outputs.release_name }} | |
| run: bash -c './.github/create-release.sh' | |
| build: | |
| runs-on: ${{ matrix.runs_on }} | |
| name: ${{ matrix.job_name }} | |
| needs: [prepare] | |
| strategy: | |
| fail-fast: false | |
| matrix: ${{ fromJSON(needs.prepare.outputs.build_matrix) }} | |
| defaults: | |
| run: | |
| shell: ${{ matrix.shell }} | |
| steps: | |
| - if: matrix.runs_on == 'ubuntu-22.04-arm' # TODO: undo; see https://github.com/orgs/community/discussions/148648#discussioncomment-11858098 | |
| run: for var in HOME PATH XDG_CONFIG_HOME; do sed -Ee "s/^/${var}=/" -e 's/(runner)admin/\1/g' <<< "${!var}"; done | tee -a "$GITHUB_ENV" | |
| - if: matrix.force_msys2_bash == 'yes' | |
| uses: msys2/setup-msys2@v2 | |
| with: | |
| msystem: UCRT64 | |
| update: true | |
| path-type: strict | |
| cache: true | |
| # this list doesn't have to mirror the one in build.sh perfectly | |
| # but the packages listed here get cached properly and take less time to install | |
| install: >- | |
| git | |
| curl | |
| mingw-w64-ucrt-x86_64-gcc | |
| mingw-w64-ucrt-x86_64-pkgconf | |
| mingw-w64-ucrt-x86_64-bzip2 | |
| mingw-w64-ucrt-x86_64-luajit | |
| mingw-w64-ucrt-x86_64-jsoncpp | |
| mingw-w64-ucrt-x86_64-curl | |
| mingw-w64-ucrt-x86_64-SDL2 | |
| mingw-w64-ucrt-x86_64-libpng | |
| mingw-w64-ucrt-x86_64-meson | |
| mingw-w64-ucrt-x86_64-python | |
| mingw-w64-ucrt-x86_64-python-pip | |
| mingw-w64-ucrt-x86_64-fftw | |
| mingw-w64-ucrt-x86_64-cmake | |
| mingw-w64-ucrt-x86_64-7zip | |
| mingw-w64-ucrt-x86_64-jq | |
| patch | |
| - run: git config --global core.autocrlf false | |
| - uses: actions/checkout@v4 | |
| - if: matrix.force_msys2_bash != 'yes' | |
| uses: actions/setup-python@v5 | |
| with: | |
| python-version: '3.10' | |
| - if: matrix.force_msys2_bash != 'yes' | |
| run: python -m pip install meson ninja | |
| - if: matrix.bsh_build_platform == 'darwin' | |
| run: brew install bash coreutils | |
| - run: bash -c './.github/build.sh' | |
| env: | |
| BSH_HOST_ARCH: ${{ matrix.bsh_host_arch }} | |
| BSH_HOST_PLATFORM: ${{ matrix.bsh_host_platform }} | |
| BSH_HOST_LIBC: ${{ matrix.bsh_host_libc }} | |
| BSH_STATIC_DYNAMIC: ${{ matrix.bsh_static_dynamic }} | |
| BSH_BUILD_PLATFORM: ${{ matrix.bsh_build_platform }} | |
| BSH_DEBUG_RELEASE: ${{ matrix.bsh_debug_release }} | |
| BSH_LINT: ${{ matrix.bsh_lint }} | |
| RELEASE_NAME: ${{ needs.prepare.outputs.release_name }} | |
| RELEASE_TYPE: ${{ needs.prepare.outputs.release_type }} | |
| MOD_ID: ${{ needs.prepare.outputs.mod_id }} | |
| APP_NAME: ${{ needs.prepare.outputs.app_name }} | |
| APP_COMMENT: ${{ needs.prepare.outputs.app_comment }} | |
| APP_EXE: ${{ needs.prepare.outputs.app_exe }} | |
| APP_ID: ${{ needs.prepare.outputs.app_id }} | |
| APP_DATA: ${{ needs.prepare.outputs.app_data }} | |
| APP_VENDOR: ${{ needs.prepare.outputs.app_vendor }} | |
| SEPARATE_DEBUG: ${{ matrix.separate_debug }} | |
| PACKAGE_MODE: ${{ matrix.package_mode }} | |
| ASSET_PATH: ${{ matrix.asset_path }} | |
| DEBUG_ASSET_PATH: ${{ matrix.debug_asset_path }} | |
| - if: needs.prepare.outputs.do_release == 'yes' && matrix.publish == 'yes' # TODO-NTL: ship licenses | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| ASSET_PATH: build/${{ matrix.asset_path }} | |
| ASSET_NAME: ${{ matrix.asset_name }} | |
| run: bash -c './.github/upload-release-asset.sh' | |
| - if: needs.prepare.outputs.do_release == 'yes' && matrix.publish == 'yes' && matrix.separate_debug == 'yes' | |
| env: | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| ASSET_PATH: build/${{ matrix.debug_asset_path }} | |
| ASSET_NAME: ${{ matrix.debug_asset_name }} | |
| run: bash -c './.github/upload-release-asset.sh' | |
| - uses: actions/upload-artifact@v4 | |
| if: matrix.artifact == 'yes' | |
| with: | |
| path: build/${{ matrix.asset_path }} | |
| name: ${{ matrix.asset_name }} | |
| - uses: actions/upload-artifact@v4 | |
| if: matrix.artifact == 'yes' && matrix.separate_debug == 'yes' | |
| with: | |
| path: build/${{ matrix.debug_asset_path }} | |
| name: ${{ matrix.debug_asset_name }} | |
| publish: | |
| runs-on: ubuntu-24.04 | |
| needs: [build, prepare] | |
| strategy: | |
| fail-fast: false | |
| matrix: ${{ fromJSON(needs.prepare.outputs.publish_matrix) }} | |
| if: needs.prepare.outputs.do_publish == 'yes' | |
| steps: | |
| - run: git config --global core.autocrlf false | |
| - uses: actions/checkout@v4 | |
| - uses: actions/download-artifact@v4 | |
| with: | |
| name: ${{ matrix.asset_name }} | |
| - run: mv ${{ matrix.asset_path }} ${{ matrix.starcatcher_name }} | |
| - run: bash -c './.github/starcatcher-publish.sh' | |
| env: | |
| PUBLISH_HOSTPORT: ${{ vars.STARCATCHER_PUBLISH_HOSTPORT }} | |
| PUBLISH_USERNAME: ${{ vars.STARCATCHER_PUBLISH_USERNAME }} | |
| PUBLISH_PASSWORD: ${{ secrets.STARCATCHER_PUBLISH_PASSWORD }} | |
| PUBLISH_DIRECTORY: ${{ vars.STARCATCHER_PUBLISH_DIRECTORY }} | |
| PUBLISH_FILENAME: ${{ matrix.starcatcher_name }} | |
| release: | |
| runs-on: ubuntu-24.04 | |
| needs: [build, publish, prepare] | |
| if: needs.prepare.outputs.do_publish == 'yes' | |
| steps: | |
| - run: git config --global core.autocrlf false | |
| - uses: actions/checkout@v4 | |
| - run: ./.github/starcatcher-release.sh | |
| env: | |
| RELEASE_NAME: ${{ needs.prepare.outputs.release_name }} | |
| RELEASE_TYPE: ${{ needs.prepare.outputs.release_type }} | |
| MOD_ID: ${{ needs.prepare.outputs.mod_id }} | |
| GITHUB_SHA: ${{ github.sha }} |