Browse Source

ci: automate release label tasks (#38181)

David Sanders 1 year ago
parent
commit
7a03509b71
1 changed files with 55 additions and 0 deletions
  1. 55 0
      .github/workflows/branch-created.yml

+ 55 - 0
.github/workflows/branch-created.yml

@@ -0,0 +1,55 @@
+name: Branch Created
+
+on:
+  create:
+
+permissions: {}
+
+jobs:
+  release-branch-created:
+    name: Release Branch Created
+    if: ${{ github.event.ref_type == 'branch' && endsWith(github.event.ref, '-x-y') }}
+    permissions:
+      contents: read
+      pull-requests: write
+      repository-projects: write  # Required for labels
+    runs-on: ubuntu-latest
+    steps:
+      - name: New Release Branch Tasks
+        env:
+          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
+          GH_REPO: electron/electron
+          NUM_SUPPORTED_VERSIONS: 3
+        run: |
+          if [[ ${{ github.event.ref }} =~ ^([0-9]+)-x-y$ ]]; then
+            MAJOR=${BASH_REMATCH[1]}
+            PREVIOUS_MAJOR=$((MAJOR - 1))
+            UNSUPPORTED_MAJOR=$((MAJOR - NUM_SUPPORTED_VERSIONS - 1))
+
+            # Create new labels
+            gh label create $MAJOR-x-y --color 8d9ee8 || true
+            gh label create target/$MAJOR-x-y --color ad244f || true
+            gh label create merged/$MAJOR-x-y --color 61a3c6 || true
+            gh label create in-flight/$MAJOR-x-y --color db69a6 || true
+            gh label create needs-manual-bp/$MAJOR-x-y --color 8b5dba || true
+
+            # Change color of old labels
+            gh label edit $UNSUPPORTED_MAJOR-x-y --color ededed || true
+            gh label edit target/$UNSUPPORTED_MAJOR-x-y --color ededed || true
+            gh label edit merged/$UNSUPPORTED_MAJOR-x-y --color ededed || true
+            gh label edit in-flight/$UNSUPPORTED_MAJOR-x-y --color ededed || true
+            gh label edit needs-manual-bp/$UNSUPPORTED_MAJOR-x-y --color ededed || true
+
+            # Add the new target label to any PRs which:
+            #   * target the previous major
+            #   * are in-flight for the previous major
+            #   * need manual backport for the previous major
+            for PREVIOUS_MAJOR_LABEL in target/$PREVIOUS_MAJOR-x-y in-flight/$PREVIOUS_MAJOR-x-y needs-manual-bp/$PREVIOUS_MAJOR-x-y; do
+              PULL_REQUESTS=$(gh pr list --label $PREVIOUS_MAJOR_LABEL --jq .[].number --json number --limit 500)
+              if [[ $PULL_REQUESTS ]]; then
+                echo $PULL_REQUESTS | xargs -n 1 gh pr edit --add-label target/$MAJOR-x-y || true
+              fi
+            done
+          else
+            echo "Not a release branch: ${{ github.event.ref }}"
+          fi