From 028a171e3b06ab42d6bab7fdaf7f6cec757b0dfb Mon Sep 17 00:00:00 2001 From: Aaron Kimbrell Date: Mon, 1 Jun 2026 17:50:14 -0500 Subject: [PATCH] feat: update CI workflows to support new OS versions and improve artifact handling --- .github/workflows/build-and-test.yml | 54 +++++++++++++++++++++++++--- .github/workflows/canary.yml | 6 ++-- .github/workflows/pr-title-check.yml | 4 +-- .github/workflows/release.yml | 6 ++-- 4 files changed, 57 insertions(+), 13 deletions(-) diff --git a/.github/workflows/build-and-test.yml b/.github/workflows/build-and-test.yml index c912edbb..b4a4a076 100644 --- a/.github/workflows/build-and-test.yml +++ b/.github/workflows/build-and-test.yml @@ -15,20 +15,32 @@ jobs: continue-on-error: ${{ github.event_name != 'push' || !startsWith(github.ref, 'refs/tags/v') }} strategy: matrix: - os: [ windows-2022, ubuntu-22.04, macos-15-intel ] + include: + - os: windows-2025 + artifact: windows + preset: ci-windows-2022 + debug_preset: windows-msvc-relwithdebinfo + - os: ubuntu-24.04 + artifact: linux + preset: ci-ubuntu-22.04 + debug_preset: linux-gnu-relwithdebinfo + - os: macos-15-intel + artifact: macos + preset: ci-macos-15-intel + debug_preset: macos-relwithdebinfo steps: - uses: actions/checkout@v4 with: submodules: true - name: Add msbuild to PATH (Windows only) - if: ${{ matrix.os == 'windows-2022' }} + if: ${{ matrix.os == 'windows-2025' }} uses: microsoft/setup-msbuild@30375c66a4eea26614e0d39710365f22f8b0af57 # v3 with: vs-version: '[17,18)' msbuild-architecture: x64 - name: Install libssl and switch to XCode 15.2 (Mac Only) - if: ${{ matrix.os == 'macos-13' }} + if: ${{ matrix.os == 'macos-15-intel' }} run: | brew install openssl@3 sudo xcode-select -s /Applications/Xcode_15.2.app/Contents/Developer @@ -39,11 +51,11 @@ jobs: - name: cmake uses: lukka/run-cmake@5d55ea7949e25f69f0ecb516d8d572297e03a956 # v10.9 with: - workflowPreset: "ci-${{matrix.os}}" + workflowPreset: "${{ matrix.debug_preset }}" - name: artifacts uses: actions/upload-artifact@v4 with: - name: build-${{matrix.os}} + name: build-${{matrix.artifact}} path: | build/*/*Server* build/*/*.ini @@ -56,3 +68,35 @@ jobs: build/*/*.dcf !build/*/*.pdb !build/*/d*/ + !build/*/*.dSYM/ + + - name: Extract Linux debug symbols + if: matrix.os == 'ubuntu-24.04' + run: | + find build -type f -name '*Server' | while read bin; do + objcopy --only-keep-debug "$bin" "${bin}.debug" + objcopy --strip-debug --add-gnu-debuglink="${bin}.debug" "$bin" + done + - name: debug symbols (Windows) + if: matrix.os == 'windows-2025' + uses: actions/upload-artifact@v4 + with: + name: debug-${{matrix.artifact}} + path: | + build/*/*.pdb + build/*/d*/ + retention-days: 30 + - name: debug symbols (Linux) + if: matrix.os == 'ubuntu-24.04' + uses: actions/upload-artifact@v4 + with: + name: debug-${{matrix.artifact}} + path: build/**/*.debug + retention-days: 30 + - name: debug symbols (macOS) + if: matrix.os == 'macos-15-intel' + uses: actions/upload-artifact@v4 + with: + name: debug-${{matrix.artifact}} + path: build/**/*.dSYM/ + retention-days: 30 diff --git a/.github/workflows/canary.yml b/.github/workflows/canary.yml index 520f735e..c2da7207 100644 --- a/.github/workflows/canary.yml +++ b/.github/workflows/canary.yml @@ -59,9 +59,9 @@ jobs: - name: Package artifacts run: | declare -A platform_map=( - ["build-windows-2022"]="darkflame-universe-windows" - ["build-ubuntu-22.04"]="darkflame-universe-linux" - ["build-macos-15-intel"]="darkflame-universe-macos" + ["build-windows"]="darkflame-universe-windows" + ["build-linux"]="darkflame-universe-linux" + ["build-macos"]="darkflame-universe-macos" ) cd artifacts for dir in */; do diff --git a/.github/workflows/pr-title-check.yml b/.github/workflows/pr-title-check.yml index 0f8aded9..00ddf4ca 100644 --- a/.github/workflows/pr-title-check.yml +++ b/.github/workflows/pr-title-check.yml @@ -1,7 +1,7 @@ name: PR Title Check on: - pull_request: + pull_request_target: types: [opened, edited, synchronize, reopened] permissions: @@ -14,7 +14,7 @@ jobs: steps: - name: Check PR title follows Conventional Commits - uses: amannn/action-semantic-pull-request@v5 + uses: amannn/action-semantic-pull-request@48f256284bd46cdaab1048c3721360e808335d50 # v6.1.1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index e8c343c3..1832e184 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -44,9 +44,9 @@ jobs: - name: Package artifacts run: | declare -A platform_map=( - ["build-windows-2022"]="darkflame-universe-windows" - ["build-ubuntu-22.04"]="darkflame-universe-linux" - ["build-macos-15-intel"]="darkflame-universe-macos" + ["build-windows"]="darkflame-universe-windows" + ["build-linux"]="darkflame-universe-linux" + ["build-macos"]="darkflame-universe-macos" ) cd artifacts for dir in */; do