From f77a98bfe651db94d729127d1c639cb2a4fc12b5 Mon Sep 17 00:00:00 2001 From: Adrian Castro <22133246+castdrian@users.noreply.github.com> Date: Wed, 19 Aug 2026 20:32:35 +0200 Subject: [PATCH] fix(ci): update platform artifact workflow gate --- .github/workflows/ci.yml | 2 +- docs/switch-build.md | 4 +-- tests/switch_ci_workflows_test.lua | 49 ++++++++++++++---------------- 3 files changed, 26 insertions(+), 29 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index cce07b0a..2d888b34 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -178,7 +178,7 @@ jobs: echo "changed=true" >> "$GITHUB_OUTPUT" exit 0 fi - if git diff --name-only "$BASE_SHA" "$HEAD_SHA" | grep -Eq '^(scripts/build_switch\.sh$|scripts/switch/|docs/switch-.*\.md$|tests/switch_ci_workflows_test\.lua$|tests/switch_transfer_docs_test\.lua$|\.github/workflows/(ci|release|switch-artifact-comment)\.yml$|src/core/(NxAssetOverlay|Platform|GameVersion)\.lua$|src/import/CacheFs\.lua$|tests/engine/(assets_version_fallback|nx_generated_guard|nx_yellow_boot|switch_diagnostics|cache_fs_gold_nx_load)_test\.lua$|tests/engine/platform_nx)'; then + if git diff --name-only "$BASE_SHA" "$HEAD_SHA" | grep -Eq '^(scripts/build_switch\.sh$|scripts/switch/|docs/switch-.*\.md$|tests/switch_ci_workflows_test\.lua$|tests/switch_transfer_docs_test\.lua$|\.github/workflows/(ci|release|platform-artifact-comment)\.yml$|src/core/(NxAssetOverlay|Platform|GameVersion)\.lua$|src/import/CacheFs\.lua$|tests/engine/(assets_version_fallback|nx_generated_guard|nx_yellow_boot|switch_diagnostics|cache_fs_gold_nx_load)_test\.lua$|tests/engine/platform_nx)'; then echo "changed=true" >> "$GITHUB_OUTPUT" else echo "changed=false" >> "$GITHUB_OUTPUT" diff --git a/docs/switch-build.md b/docs/switch-build.md index f84a4d11..cb4095be 100644 --- a/docs/switch-build.md +++ b/docs/switch-build.md @@ -188,8 +188,8 @@ or the Switch-related workflow YAML), CI runs: head is that repo (same-repo push/PR). Fork CI never runs fused. Fork PRs into the main repo also skip Switch fused (offline selftest still runs) so untrusted head code is not executed on the self-hosted Mac; iOS device build eligibility is unchanged. Fused also waits for a successful offline selftest before starting on the Mac runner. 3. On successful PR fused builds, a follow-up workflow posts a PR comment linking the Actions artifact named `gen1recomp-switch-nro` - (comment tag `switch-build-result`; see - `.github/workflows/switch-artifact-comment.yml`). + (comment tag `platform-build-result`; see + `.github/workflows/platform-artifact-comment.yml`). Unrelated PRs do not burn the self-hosted Mac on Switch packaging. diff --git a/tests/switch_ci_workflows_test.lua b/tests/switch_ci_workflows_test.lua index 9cf381be..d37a34c0 100644 --- a/tests/switch_ci_workflows_test.lua +++ b/tests/switch_ci_workflows_test.lua @@ -26,12 +26,11 @@ end -- Also gates the NX runtime modules and the NX engine suites so an NX -- runtime regression cannot slip past switch-selftest / switch-build. local SWITCH_PATH_REGEX = - [[^(scripts/build_switch\.sh$|scripts/switch/|docs/switch-.*\.md$|tests/switch_ci_workflows_test\.lua$|tests/switch_transfer_docs_test\.lua$|\.github/workflows/(ci|release|switch-artifact-comment)\.yml$|src/core/(NxAssetOverlay|Platform|GameVersion)\.lua$|src/import/CacheFs\.lua$|tests/engine/(assets_version_fallback|nx_generated_guard|nx_yellow_boot|switch_diagnostics|cache_fs_gold_nx_load)_test\.lua$|tests/engine/platform_nx)]] + [[^(scripts/build_switch\.sh$|scripts/switch/|docs/switch-.*\.md$|tests/switch_ci_workflows_test\.lua$|tests/switch_transfer_docs_test\.lua$|\.github/workflows/(ci|release|platform-artifact-comment)\.yml$|src/core/(NxAssetOverlay|Platform|GameVersion)\.lua$|src/import/CacheFs\.lua$|tests/engine/(assets_version_fallback|nx_generated_guard|nx_yellow_boot|switch_diagnostics|cache_fs_gold_nx_load)_test\.lua$|tests/engine/platform_nx)]] local ci = read(".github/workflows/ci.yml") local release = read(".github/workflows/release.yml") -local comment_wf = read(".github/workflows/switch-artifact-comment.yml") -local ios_comment_wf = read(".github/workflows/ios-artifact-comment.yml") +local comment_wf = read(".github/workflows/platform-artifact-comment.yml") -- --- SWCI-01: path detector --- mustContain(ci, "switch-changes:", "ci.yml") @@ -129,28 +128,26 @@ do end -- --- SWCI-06 / SWCI-07 / SWFIX-01: PR artifact comment (no delete-all clobber) --- -mustContain(comment_wf, "workflows: [ci]", "switch-artifact-comment") -mustContain(comment_wf, "gen1recomp-switch-nro", "switch-artifact-comment") -mustContain(comment_wf, "comment-tag: switch-build-result", "switch-artifact-comment") -mustContain(comment_wf, "pull_request", "switch-artifact-comment") -mustContain(comment_wf, "conclusion == 'success'", "switch-artifact-comment") -mustContain(comment_wf, 'exit 0', "switch-artifact-comment no-op") -mustContain(comment_wf, "**Commit**:", "switch-artifact-comment") -mustContain(comment_wf, "**Build Time**:", "switch-artifact-comment") -mustContain(comment_wf, "View workflow run", "switch-artifact-comment") -mustContain(comment_wf, "thollander/actions-comment-pull-request@v3", "switch-artifact-comment") -mustNotContain(comment_wf, "delete-comment", "switch-artifact-comment") -mustNotContain(comment_wf, "izhangzhihao/delete-comment", "switch-artifact-comment") - -mustContain(ios_comment_wf, "comment-tag: ios-build-result", "ios-artifact-comment") -mustContain(ios_comment_wf, "thollander/actions-comment-pull-request@v3", "ios-artifact-comment") -mustNotContain(ios_comment_wf, "delete-comment", "ios-artifact-comment") -mustNotContain(ios_comment_wf, "izhangzhihao/delete-comment", "ios-artifact-comment") --- Distinct tags so both commenters can coexist on the same PR -check(comment_wf:find("comment-tag: switch-build-result", 1, true) - and ios_comment_wf:find("comment-tag: ios-build-result", 1, true) - and comment_wf:find("comment-tag: ios-build-result", 1, true) == nil, - "iOS and Switch comment-tags must be distinct and present") +mustContain(comment_wf, "workflows: [ci]", "platform-artifact-comment") +for _, artifact in ipairs({ + "gen1recomp++-macos", + "gen1recomp++-ios-ipa", + "gen1recomp-switch-nro", + "gen1recomp-xbox-uwp", + "gen1recomp-linux-arm64", +}) do + mustContain(comment_wf, artifact, "platform-artifact-comment") +end +mustContain(comment_wf, "comment-tag: platform-build-result", "platform-artifact-comment") +mustContain(comment_wf, "pull_request", "platform-artifact-comment") +mustContain(comment_wf, "conclusion == 'success'", "platform-artifact-comment") +mustContain(comment_wf, 'exit 0', "platform-artifact-comment no-op") +mustContain(comment_wf, "**Commit**:", "platform-artifact-comment") +mustContain(comment_wf, "**Build Time**:", "platform-artifact-comment") +mustContain(comment_wf, "View workflow run", "platform-artifact-comment") +mustContain(comment_wf, "thollander/actions-comment-pull-request@v3", "platform-artifact-comment") +mustNotContain(comment_wf, "delete-comment", "platform-artifact-comment") +mustNotContain(comment_wf, "izhangzhihao/delete-comment", "platform-artifact-comment") -- --- SWCI-08 / SWCI-09: docs CI vs release --- local build_doc = read("docs/switch-build.md") @@ -161,7 +158,7 @@ mustContain(build_doc, "ubuntu-latest", "switch-build.md") mustContain(build_doc, "selftest_build_switch.sh", "switch-build.md") mustContain(build_doc, "main repo", "switch-build.md") mustContain(build_doc, "gen1recomp-switch-nro", "switch-build.md") -mustContain(build_doc, "switch-build-result", "switch-build.md") +mustContain(build_doc, "platform-build-result", "switch-build.md") mustContain(build_doc, "hard gate", "switch-build.md") mustContain(build_doc, "continue-on-error", "switch-build.md") mustContain(build_doc, "nacptool", "switch-build.md")