diff --git a/.github/workflows/branch-created.yml b/.github/workflows/branch-created.yml new file mode 100644 index 000000000000..77689f4ec38f --- /dev/null +++ b/.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