169 lines
6.4 KiB
YAML
169 lines
6.4 KiB
YAML
name: LANCommander Pull Request
|
|
|
|
on:
|
|
pull_request:
|
|
types:
|
|
- opened
|
|
- synchronize
|
|
- reopened
|
|
- ready_for_review
|
|
workflow_dispatch:
|
|
|
|
permissions:
|
|
contents: write
|
|
packages: read
|
|
|
|
jobs:
|
|
prep:
|
|
runs-on: ubuntu-latest
|
|
outputs:
|
|
version_semver: ${{ steps.set_version.outputs.version_semver }}
|
|
version_tag: ${{ steps.set_version.outputs.version_tag }}
|
|
build_dotnet_version: 9.0.102
|
|
steps:
|
|
- name: Check out code
|
|
uses: actions/checkout@v4
|
|
with:
|
|
fetch-depth: 0
|
|
|
|
- name: Determine build metadata
|
|
id: set_version
|
|
shell: bash
|
|
env:
|
|
PR_NUMBER: ${{ github.event.pull_request.number }}
|
|
RUN_NUMBER: ${{ github.run_number }}
|
|
run: |
|
|
TIMESTAMP=$(date -u +"%Y%m%d%H%M")
|
|
TIME_COMPONENT=$(date -u +"%H%M")
|
|
TIME_COMPONENT=$((10#$TIME_COMPONENT))
|
|
|
|
if [ -n "$PR_NUMBER" ]; then
|
|
BUILD_COMPONENT=$((PR_NUMBER % 65535))
|
|
if [ "$BUILD_COMPONENT" -eq 0 ]; then
|
|
BUILD_COMPONENT=1
|
|
fi
|
|
VERSION_SEMVER="0.0.${BUILD_COMPONENT}.${TIME_COMPONENT}"
|
|
VERSION_TAG="0.0.${BUILD_COMPONENT}-pr.${PR_NUMBER}.${TIMESTAMP}"
|
|
else
|
|
BUILD_COMPONENT=$((RUN_NUMBER % 65535))
|
|
if [ "$BUILD_COMPONENT" -eq 0 ]; then
|
|
BUILD_COMPONENT=1
|
|
fi
|
|
VERSION_SEMVER="0.0.${BUILD_COMPONENT}.${TIME_COMPONENT}"
|
|
VERSION_TAG="0.0.${BUILD_COMPONENT}-ci.${RUN_NUMBER}.${TIMESTAMP}"
|
|
fi
|
|
|
|
echo "version_semver=$VERSION_SEMVER" >> $GITHUB_OUTPUT
|
|
echo "version_tag=$VERSION_TAG" >> $GITHUB_OUTPUT
|
|
|
|
build_server_linux_arm64:
|
|
needs: [prep]
|
|
uses: ./.github/workflows/LANCommander.Server.yml
|
|
with:
|
|
build_dotnet_version: ${{ needs.prep.outputs.build_dotnet_version }}
|
|
version_semver: ${{ needs.prep.outputs.version_semver }}
|
|
version_tag: ${{ needs.prep.outputs.version_tag }}
|
|
build_runtime: linux-arm64
|
|
build_arch: arm64
|
|
build_platform: Linux
|
|
build_configuration: Debug
|
|
|
|
build_server_linux_x64:
|
|
needs: [prep]
|
|
uses: ./.github/workflows/LANCommander.Server.yml
|
|
with:
|
|
build_dotnet_version: ${{ needs.prep.outputs.build_dotnet_version }}
|
|
version_semver: ${{ needs.prep.outputs.version_semver }}
|
|
version_tag: ${{ needs.prep.outputs.version_tag }}
|
|
build_runtime: linux-x64
|
|
build_arch: x64
|
|
build_platform: Linux
|
|
build_configuration: Debug
|
|
|
|
build_server_osx_arm64:
|
|
needs: [prep]
|
|
uses: ./.github/workflows/LANCommander.Server.yml
|
|
with:
|
|
build_dotnet_version: ${{ needs.prep.outputs.build_dotnet_version }}
|
|
version_semver: ${{ needs.prep.outputs.version_semver }}
|
|
version_tag: ${{ needs.prep.outputs.version_tag }}
|
|
build_runtime: osx-arm64
|
|
build_arch: arm64
|
|
build_platform: macOS
|
|
build_configuration: Debug
|
|
|
|
build_server_osx_x64:
|
|
needs: [prep]
|
|
uses: ./.github/workflows/LANCommander.Server.yml
|
|
with:
|
|
build_dotnet_version: ${{ needs.prep.outputs.build_dotnet_version }}
|
|
version_semver: ${{ needs.prep.outputs.version_semver }}
|
|
version_tag: ${{ needs.prep.outputs.version_tag }}
|
|
build_runtime: osx-x64
|
|
build_arch: x64
|
|
build_platform: macOS
|
|
build_configuration: Debug
|
|
|
|
build_server_win_arm64:
|
|
needs: [prep]
|
|
uses: ./.github/workflows/LANCommander.Server.yml
|
|
with:
|
|
build_dotnet_version: ${{ needs.prep.outputs.build_dotnet_version }}
|
|
version_semver: ${{ needs.prep.outputs.version_semver }}
|
|
version_tag: ${{ needs.prep.outputs.version_tag }}
|
|
build_runtime: win-arm64
|
|
build_arch: arm64
|
|
build_platform: Windows
|
|
build_configuration: Debug
|
|
|
|
build_server_win_x64:
|
|
needs: [prep]
|
|
uses: ./.github/workflows/LANCommander.Server.yml
|
|
with:
|
|
build_dotnet_version: ${{ needs.prep.outputs.build_dotnet_version }}
|
|
version_semver: ${{ needs.prep.outputs.version_semver }}
|
|
version_tag: ${{ needs.prep.outputs.version_tag }}
|
|
build_runtime: win-x64
|
|
build_arch: x64
|
|
build_platform: Windows
|
|
build_configuration: Debug
|
|
|
|
build_launcher_linux_x64:
|
|
needs: [prep]
|
|
uses: ./.github/workflows/LANCommander.Launcher.yml
|
|
with:
|
|
build_dotnet_version: ${{ needs.prep.outputs.build_dotnet_version }}
|
|
version_semver: ${{ needs.prep.outputs.version_semver }}
|
|
version_tag: ${{ needs.prep.outputs.version_tag }}
|
|
build_runtime: linux-x64
|
|
build_arch: x64
|
|
build_platform: Linux
|
|
build_configuration: Debug
|
|
|
|
build_launcher_win_x64:
|
|
needs: [prep]
|
|
uses: ./.github/workflows/LANCommander.Launcher.yml
|
|
with:
|
|
build_dotnet_version: ${{ needs.prep.outputs.build_dotnet_version }}
|
|
version_semver: ${{ needs.prep.outputs.version_semver }}
|
|
version_tag: ${{ needs.prep.outputs.version_tag }}
|
|
build_runtime: win-x64
|
|
build_arch: x64
|
|
build_platform: Windows
|
|
build_configuration: Debug
|
|
|
|
launcher_tests:
|
|
needs: [prep]
|
|
uses: ./.github/workflows/LANCommander.Launcher.Tests.yml
|
|
with:
|
|
build_dotnet_version: ${{ needs.prep.outputs.build_dotnet_version }}
|
|
|
|
launcher_tests_pr_comment:
|
|
# Always run after the test job — even on failure — so visual regressions
|
|
# show up as a PR comment instead of being buried in the artifact.
|
|
needs: [launcher_tests]
|
|
if: always() && needs.launcher_tests.result != 'cancelled' && github.event.pull_request.number != null
|
|
uses: ./.github/workflows/LANCommander.Launcher.Tests.PRComment.yml
|
|
with:
|
|
pr_number: ${{ github.event.pull_request.number }}
|
|
artifact_run_id: ${{ github.run_id }}
|