From 4460089924858a97d148235b54a60bab42e4f6ea Mon Sep 17 00:00:00 2001 From: Mikhail Agapov Date: Tue, 7 Jul 2026 11:53:07 +0300 Subject: [PATCH] chore: remove dead CI config and fix misleading contracts - drop workflow_dispatch triggers no job can handle (claude-pr-review, claude-pr-review-require, enforce-group-approvals, auto-assign, pr-comment-artifact-url, pr-comment-warnings) and the unhandled pull_request_review_comment trigger in claude-pr-review - pr-closure.yml: remove TARGET env - there is no matrix in this job and build.py --delete derives targets from BRANCH_NAME - on-delete-release.yml: don't write version "null" to latest.json when the last release is deleted - build-release-main-page.yml: remove workflow_run entry that matches by file path (matching is by name only), drop target_commitish pointing at the dev head, trim unused job outputs - build-unitycloud.yml: remove defaults on required workflow_call inputs (never used); document the check names shared with test.yml - test.yml: delete long-dead commented-out lint steps; document check names referenced by build-unitycloud.yml skip statuses - close-inactive-issues.yml: drop contents:write - actions/stale does not need it - version action: commit_sha is optional (falls back to GITHUB_SHA); callers already rely on that - build-profile-nightly.yml: rename misleading full_version output that actually carried short_version Co-Authored-By: Claude Fable 5 --- .github/actions/version/action.yml | 4 +- .github/workflows/auto-assign.yml | 1 - .github/workflows/build-profile-nightly.yml | 6 +-- .github/workflows/build-release-main-page.yml | 12 +++--- .github/workflows/build-unitycloud.yml | 7 ++-- .../workflows/claude-pr-review-require.yml | 1 - .github/workflows/claude-pr-review.yml | 3 -- .github/workflows/close-inactive-issues.yml | 1 - .github/workflows/enforce-group-approvals.yml | 1 - .github/workflows/on-delete-release.yml | 7 +++- .github/workflows/pr-closure.yml | 2 +- .github/workflows/pr-comment-artifact-url.yml | 1 - .../pr-comment-delete-artifact-url.yml | 2 +- .github/workflows/pr-comment-warnings.yml | 1 - .github/workflows/test.yml | 40 ++----------------- 15 files changed, 27 insertions(+), 62 deletions(-) diff --git a/.github/actions/version/action.yml b/.github/actions/version/action.yml index 1f45a5ead84..33cd8ecde98 100644 --- a/.github/actions/version/action.yml +++ b/.github/actions/version/action.yml @@ -5,8 +5,8 @@ inputs: description: 'Formatted version tag. If not set, it uses the latest version tag (v[0-9]*)' required: false commit_sha: - description: 'The commit SHA to use for versioning' - required: true + description: 'The commit SHA to use for versioning. Falls back to GITHUB_SHA when omitted.' + required: false outputs: latest_version: description: 'Latest available version tag in repo' diff --git a/.github/workflows/auto-assign.yml b/.github/workflows/auto-assign.yml index 04903ec27cc..b339c25416d 100644 --- a/.github/workflows/auto-assign.yml +++ b/.github/workflows/auto-assign.yml @@ -1,7 +1,6 @@ name: 'Auto Assign Reviewers' on: - workflow_dispatch: pull_request: types: [opened, ready_for_review] diff --git a/.github/workflows/build-profile-nightly.yml b/.github/workflows/build-profile-nightly.yml index e918f08ee91..9ba3614f95f 100644 --- a/.github/workflows/build-profile-nightly.yml +++ b/.github/workflows/build-profile-nightly.yml @@ -54,8 +54,8 @@ jobs: needs: check-commits if: needs.check-commits.outputs.should_build == 'true' outputs: - latest_version: ${{ steps.get_version.outputs.latest_version }} - full_version: ${{ steps.get_version.outputs.short_version }} + # short_version (no commit hash) is what the build consumes as its version + version: ${{ steps.get_version.outputs.short_version }} tag_version: ${{ steps.get_version.outputs.tag_version }} steps: - name: Checkout code @@ -76,7 +76,7 @@ jobs: profile: profile clean_build: true cache_strategy: library - version: ${{ needs.get-info.outputs.full_version }} + version: ${{ needs.get-info.outputs.version }} sentry_enabled: true is_release_build: false install_source: launcher diff --git a/.github/workflows/build-release-main-page.yml b/.github/workflows/build-release-main-page.yml index 72cce200b9f..feaaac1a346 100644 --- a/.github/workflows/build-release-main-page.yml +++ b/.github/workflows/build-release-main-page.yml @@ -2,21 +2,20 @@ name: Create Page Weekly Release on: workflow_run: + # workflow_run matches by workflow *name* only — a file path here never + # matches anything. workflows: - Unity Cloud Build Release - - .github/workflows/build-release-main.yml types: - completed -jobs: +jobs: get-info: name: Get Info if: ${{ github.event.workflow_run.conclusion == 'success' }} runs-on: ubuntu-latest timeout-minutes: 5 outputs: - latest_version: ${{ steps.get_version.outputs.latest_version }} - full_version: ${{ steps.get_version.outputs.next_full_version }} tag_version: ${{ steps.get_version.outputs.next_tag_version }} steps: - name: Checkout code @@ -65,8 +64,11 @@ jobs: with: generate_release_notes: true draft: true # Swap to auto-release! + # No target_commitish: the tag was created and pushed on main above, + # so the release resolves to it. github.sha here is the DEFAULT + # branch head (dev) — workflow_run events run in that context — and + # must not be used as the release target. tag_name: ${{ needs.get-info.outputs.tag_version }} - target_commitish: ${{ github.sha }} files: | ./Decentraland_windows64.zip ./Decentraland_macos.zip diff --git a/.github/workflows/build-unitycloud.yml b/.github/workflows/build-unitycloud.yml index 384a756a1dd..f062db71c29 100644 --- a/.github/workflows/build-unitycloud.yml +++ b/.github/workflows/build-unitycloud.yml @@ -93,21 +93,20 @@ on: - macos-only workflow_call: inputs: + # Required inputs carry no default — a default on a required input can + # never be used. profile: required: true type: string - default: 'none' compression: required: false type: string default: 'LZ4HC' clean_build: required: true - default: true type: boolean cache_strategy: required: true - default: 'library' type: string version: required: true @@ -314,6 +313,8 @@ jobs: with: script: | const sha = context.payload.pull_request.head.sha; + // Must match this workflow's "Build ()" job names and the + // "Test ()" job names in test.yml — keep in sync on rename. const checks = [ 'Build (macos)', 'Build (windows64)', diff --git a/.github/workflows/claude-pr-review-require.yml b/.github/workflows/claude-pr-review-require.yml index 41c22dde44c..dad61b39537 100644 --- a/.github/workflows/claude-pr-review-require.yml +++ b/.github/workflows/claude-pr-review-require.yml @@ -1,6 +1,5 @@ name: Require Claude Review on: - workflow_dispatch: pull_request: types: [opened, synchronize, ready_for_review] diff --git a/.github/workflows/claude-pr-review.yml b/.github/workflows/claude-pr-review.yml index 4a3d7b5f50a..6b0d2f8a1ef 100644 --- a/.github/workflows/claude-pr-review.yml +++ b/.github/workflows/claude-pr-review.yml @@ -1,10 +1,7 @@ name: Claude Review on: - workflow_dispatch: issue_comment: types: [created] - pull_request_review_comment: - types: [created] pull_request: types: [opened, synchronize, ready_for_review, labeled] diff --git a/.github/workflows/close-inactive-issues.yml b/.github/workflows/close-inactive-issues.yml index 064ab055974..ac6951b2078 100644 --- a/.github/workflows/close-inactive-issues.yml +++ b/.github/workflows/close-inactive-issues.yml @@ -9,7 +9,6 @@ jobs: close-issues: runs-on: ubuntu-latest permissions: - contents: write # Needed to allow deletion of stale state files issues: write pull-requests: write diff --git a/.github/workflows/enforce-group-approvals.yml b/.github/workflows/enforce-group-approvals.yml index d0d28740443..4cb944ca126 100644 --- a/.github/workflows/enforce-group-approvals.yml +++ b/.github/workflows/enforce-group-approvals.yml @@ -1,7 +1,6 @@ name: Enforce QA and DEV Approvals on: - workflow_dispatch: pull_request: branches: [dev] types: diff --git a/.github/workflows/on-delete-release.yml b/.github/workflows/on-delete-release.yml index df8a135157e..1c958b67619 100644 --- a/.github/workflows/on-delete-release.yml +++ b/.github/workflows/on-delete-release.yml @@ -24,8 +24,11 @@ jobs: DELETED_RELEASE_TAG=$(jq -r .release.tag_name "$GITHUB_EVENT_PATH") echo "Deleted Release Tag: $DELETED_RELEASE_TAG" - # Fetch the current latest release from the API - LATEST_RELEASE=$(curl -H "Authorization: Bearer $GITHUB_TOKEN" -s "https://api.github.com/repos/${{ github.repository }}/releases/latest" | jq -r .tag_name) + # Fetch the current latest release from the API. '// empty' keeps the + # output blank when no release remains (the API returns 404 JSON with + # no tag_name) — otherwise the literal string "null" would be written + # to latest.json as the version. + LATEST_RELEASE=$(curl -H "Authorization: Bearer $GITHUB_TOKEN" -s "https://api.github.com/repos/${{ github.repository }}/releases/latest" | jq -r '.tag_name // empty') echo "Latest Release Tag: $LATEST_RELEASE" echo "latest_release=$LATEST_RELEASE" >> $GITHUB_OUTPUT diff --git a/.github/workflows/pr-closure.yml b/.github/workflows/pr-closure.yml index f237016579d..ab479028fac 100644 --- a/.github/workflows/pr-closure.yml +++ b/.github/workflows/pr-closure.yml @@ -30,6 +30,6 @@ jobs: API_KEY: ${{ secrets.UNITY_CLOUD_API_KEY }} ORG_ID: ${{ secrets.UNITY_CLOUD_ORG_ID }} PROJECT_ID: ${{ secrets.UNITY_CLOUD_PROJECT_ID }} - TARGET: t_${{ matrix.target }} + # --delete derives the target names for every platform from BRANCH_NAME BRANCH_NAME: ${{ github.head_ref || github.ref_name }} run: python -u scripts/cloudbuild/build.py --delete \ No newline at end of file diff --git a/.github/workflows/pr-comment-artifact-url.yml b/.github/workflows/pr-comment-artifact-url.yml index 22558ddb44f..3f9f047fe18 100644 --- a/.github/workflows/pr-comment-artifact-url.yml +++ b/.github/workflows/pr-comment-artifact-url.yml @@ -10,7 +10,6 @@ on: - "Unity Cloud Build" branches-ignore: - "main" - workflow_dispatch: permissions: contents: read pull-requests: write diff --git a/.github/workflows/pr-comment-delete-artifact-url.yml b/.github/workflows/pr-comment-delete-artifact-url.yml index 033c087819d..8384838c33f 100644 --- a/.github/workflows/pr-comment-delete-artifact-url.yml +++ b/.github/workflows/pr-comment-delete-artifact-url.yml @@ -1,4 +1,4 @@ -# pr-comment-artifact-url.yml +# pr-comment-delete-artifact-url.yml --- name: Delete Artifact URL in PR diff --git a/.github/workflows/pr-comment-warnings.yml b/.github/workflows/pr-comment-warnings.yml index 8868b304d98..dd3e3ca3e28 100644 --- a/.github/workflows/pr-comment-warnings.yml +++ b/.github/workflows/pr-comment-warnings.yml @@ -11,7 +11,6 @@ on: - "completed" workflows: - "Unity Test" - workflow_dispatch: permissions: contents: read diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 5fd705f209f..b3d79f84b50 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -224,42 +224,7 @@ jobs: exit 1 fi - # - name: Activate Unity license - # run: | - # docker run --rm \ - # -v /tmp/unity-home/.local/share/unity3d:/root/.local/share/unity3d \ - # -v /tmp/unity-home/.cache/unity3d:/root/.cache/unity3d \ - # -v /tmp/unity-home/.config/unity3d:/root/.config/unity3d \ - # -e UNITY_EMAIL="$UNITY_EMAIL" \ - # -e UNITY_PASSWORD="$UNITY_PASSWORD" \ - # -e UNITY_LICENSE="$UNITY_LICENSE" \ - # ${{ steps.img-lint.outputs.ghcr }} \ - # /bin/bash -lc 'source /opt/unity/activate.sh 2>/dev/null || true; unity-editor -batchmode -nographics -quit -logFile /dev/stdout' - - # # C# Linting using JetBrains ReSharper CLI - - # - name: Generate solution inside Unity Docker container - # run: | - # docker run --rm \ - # -v "${{ github.workspace }}:/workspace" \ - # -v $SSH_AUTH_SOCK:$SSH_AUTH_SOCK \ - # -v /tmp/ssh-unity:/root/.ssh:ro \ - # -v /tmp/unity-home/.local/share/unity3d:/root/.local/share/unity3d \ - # -v /tmp/unity-home/.cache/unity3d:/root/.cache/unity3d \ - # -v /tmp/unity-home/.config/unity3d:/root/.config/unity3d \ - # -e SSH_AUTH_SOCK=$SSH_AUTH_SOCK \ - # -e UNITY_EMAIL="$UNITY_EMAIL" \ - # -e UNITY_PASSWORD="$UNITY_PASSWORD" \ - # -e UNITY_LICENSE="$UNITY_LICENSE" \ - # -w /workspace \ - # ${{ steps.img-lint.outputs.ghcr }} \ - # unity-editor \ - # -batchmode \ - # -nographics \ - # -projectPath /workspace/Explorer \ - # -executeMethod UnityEditor.SyncVS.SyncSolution \ - # -quit \ - # -logFile - + # BEGIN: C# Linting using JetBrains ReSharper CLI - name: Rewrite GitHub SSH URLs to HTTPS run: | @@ -466,6 +431,9 @@ jobs: contains(fromJSON('["force-build", "clean-build"]'), github.event.label.name) ) ) + # The resulting check names "Test (editmode)" / "Test (playmode)" are + # posted as skip statuses by build-unitycloud.yml ("Skip build and test + # checks" step) — keep both places in sync when renaming. name: Test (${{ matrix.testMode }}) runs-on: ubuntu-latest strategy: