From 6d5c964e3d34a4936a7394548f1757fbc0aed4d7 Mon Sep 17 00:00:00 2001 From: Timothy Carambat Date: Thu, 5 Mar 2026 08:40:43 -0800 Subject: [PATCH] split cleanup --- .github/workflows/cleanup-qa-tag.yaml | 47 ++++++++++++++++++++++----- 1 file changed, 38 insertions(+), 9 deletions(-) diff --git a/.github/workflows/cleanup-qa-tag.yaml b/.github/workflows/cleanup-qa-tag.yaml index 8bbd0669..74c4d9ac 100644 --- a/.github/workflows/cleanup-qa-tag.yaml +++ b/.github/workflows/cleanup-qa-tag.yaml @@ -11,24 +11,22 @@ on: required: true jobs: - cleanup: - name: Delete QA GHCR image tag + cleanup-manual: + name: Delete QA GHCR image tag (manual) runs-on: ubuntu-latest - if: >- - github.event_name == 'workflow_dispatch' || - (github.event.action == 'closed' && contains(github.event.pull_request.labels.*.name, 'PR: Ready for QA')) || - (github.event.action == 'unlabeled' && github.event.label.name == 'PR: Ready for QA') + if: github.event_name == 'workflow_dispatch' permissions: packages: write steps: - name: Delete PR tag from GHCR env: GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} - PR_NUMBER: ${{ github.event.inputs.pr_number || github.event.pull_request.number }} + PR_NUMBER: ${{ inputs.pr_number }} + REPO_NAME: ${{ github.event.repository.name }} run: | VERSION_ID=$(gh api \ -H "Accept: application/vnd.github+json" \ - "/orgs/${{ github.repository_owner }}/packages/container/${{ github.event.repository.name }}/versions" \ + "/orgs/${{ github.repository_owner }}/packages/container/${REPO_NAME}/versions" \ --jq ".[] | select(.metadata.container.tags[] == \"pr-${PR_NUMBER}\") | .id" \ 2>/dev/null || true) @@ -37,7 +35,38 @@ jobs: gh api \ --method DELETE \ -H "Accept: application/vnd.github+json" \ - "/orgs/${{ github.repository_owner }}/packages/container/${{ github.event.repository.name }}/versions/$VERSION_ID" + "/orgs/${{ github.repository_owner }}/packages/container/${REPO_NAME}/versions/$VERSION_ID" + else + echo "No package found with tag pr-${PR_NUMBER}, skipping cleanup" + fi + + cleanup-auto: + name: Delete QA GHCR image tag (auto) + runs-on: ubuntu-latest + if: >- + (github.event.action == 'closed' && contains(github.event.pull_request.labels.*.name, 'PR: Ready for QA')) || + (github.event.action == 'unlabeled' && github.event.label.name == 'PR: Ready for QA') + permissions: + packages: write + steps: + - name: Delete PR tag from GHCR + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} + PR_NUMBER: ${{ github.event.pull_request.number }} + REPO_NAME: ${{ github.event.repository.name }} + run: | + VERSION_ID=$(gh api \ + -H "Accept: application/vnd.github+json" \ + "/orgs/${{ github.repository_owner }}/packages/container/${REPO_NAME}/versions" \ + --jq ".[] | select(.metadata.container.tags[] == \"pr-${PR_NUMBER}\") | .id" \ + 2>/dev/null || true) + + if [ -n "$VERSION_ID" ]; then + echo "Deleting package version $VERSION_ID (tag: pr-${PR_NUMBER})" + gh api \ + --method DELETE \ + -H "Accept: application/vnd.github+json" \ + "/orgs/${{ github.repository_owner }}/packages/container/${REPO_NAME}/versions/$VERSION_ID" else echo "No package found with tag pr-${PR_NUMBER}, skipping cleanup" fi