b639fa4626
* ci: close previous release project board after creating new one * ci: tweak release project board closure to major - 2
109 lines
5 KiB
YAML
109 lines
5 KiB
YAML
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: Determine Major Version
|
|
id: check-major-version
|
|
run: |
|
|
if [[ ${{ github.event.ref }} =~ ^([0-9]+)-x-y$ ]]; then
|
|
echo "MAJOR=${BASH_REMATCH[1]}" >> "$GITHUB_OUTPUT"
|
|
else
|
|
echo "Not a release branch: ${{ github.event.ref }}"
|
|
fi
|
|
- name: New Release Branch Tasks
|
|
if: ${{ steps.check-major-version.outputs.MAJOR }}
|
|
env:
|
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
GH_REPO: electron/electron
|
|
MAJOR: ${{ steps.check-major-version.outputs.MAJOR }}
|
|
NUM_SUPPORTED_VERSIONS: 3
|
|
run: |
|
|
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 --description "PR should also be added to the \"${MAJOR}-x-y\" branch." || true
|
|
gh label create merged/$MAJOR-x-y --color 61a3c6 --description "PR was merged to the \"${MAJOR}-x-y\" branch." || 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
|
|
- name: Generate GitHub App token
|
|
if: ${{ steps.check-major-version.outputs.MAJOR }}
|
|
uses: electron/github-app-auth-action@384fd19694fe7b6dcc9a684746c6976ad78228ae # v1.1.1
|
|
id: generate-token
|
|
with:
|
|
creds: ${{ secrets.RELEASE_BOARD_GH_APP_CREDS }}
|
|
org: electron
|
|
- name: Generate Release Project Board Metadata
|
|
if: ${{ steps.check-major-version.outputs.MAJOR }}
|
|
uses: actions/github-script@d7906e4ad0b1822421a7e6a35d5ca353c962f410 # v6.4.1
|
|
id: generate-project-metadata
|
|
with:
|
|
script: |
|
|
const major = ${{ steps.check-major-version.outputs.MAJOR }}
|
|
const nextMajor = major + 1
|
|
const prevMajor = major - 1
|
|
|
|
core.setOutput("major", major)
|
|
core.setOutput("next-major", nextMajor)
|
|
core.setOutput("prev-major", prevMajor)
|
|
core.setOutput("prev-prev-major", prevMajor - 1)
|
|
core.setOutput("template-view", JSON.stringify({
|
|
major,
|
|
"next-major": nextMajor,
|
|
"prev-major": prevMajor,
|
|
}))
|
|
- name: Create Release Project Board
|
|
if: ${{ steps.check-major-version.outputs.MAJOR }}
|
|
uses: dsanders11/project-actions/copy-project@3a81985616963f32fae17d1d1b406c631f3201a1 # v1.1.0
|
|
with:
|
|
drafts: true
|
|
project-number: 64
|
|
# TODO - Set to public once GitHub fixes their GraphQL bug
|
|
# public: true
|
|
link-to-repository: electron/electron
|
|
template-view: ${{ steps.generate-project-metadata.outputs.template-view }}
|
|
title: ${{ steps.generate-project-metadata.outputs.major }}-x-y
|
|
token: ${{ steps.generate-token.outputs.token }}
|
|
- name: Find Previous Release Project Board
|
|
if: ${{ steps.check-major-version.outputs.MAJOR }}
|
|
uses: dsanders11/project-actions/find-project@3a81985616963f32fae17d1d1b406c631f3201a1 # v1.1.0
|
|
id: find-prev-release-board
|
|
with:
|
|
title: ${{ steps.generate-project-metadata.outputs.prev-prev-major }}-x-y
|
|
- name: Close Previous Release Project Board
|
|
if: ${{ steps.check-major-version.outputs.MAJOR }}
|
|
uses: dsanders11/project-actions/close-project@3a81985616963f32fae17d1d1b406c631f3201a1 # v1.1.0
|
|
with:
|
|
project-number: ${{ steps.find-prev-release-board.outputs.number }}
|