diff --git a/.github/workflows/backport.yaml b/.github/workflows/backport.yaml new file mode 100644 index 00000000..bb11015b --- /dev/null +++ b/.github/workflows/backport.yaml @@ -0,0 +1,42 @@ +# WARNING: +# When extending this action, be aware that $GITHUB_TOKEN allows write access to +# the GitHub repository. This means that it should not evaluate user input in a +# way that allows code injection. + +name: Backport + +on: + pull_request_target: + types: [closed, labeled] + +permissions: {} + +jobs: + backport: + name: Backport Pull Request + if: github.repository_owner == 'jumpstarter-dev' && github.event.pull_request.merged == true && (github.event_name != 'labeled' || startsWith('backport', github.event.label.name)) + runs-on: ubuntu-24.04 + steps: + # Use a GitHub App to create the PR so that CI gets triggered + # The App is scoped to Repository > Contents and Pull Requests: write for jumpstarter-dev + - uses: actions/create-github-app-token@3ff1caaa28b64c9cc276ce0a02e2ff584f3900c5 # v2.0.2 + id: app-token + with: + app-id: ${{ secrets.JUMPSTARTER_BACKPORT_BOT_APP_ID }} + private-key: ${{ secrets.JUMPSTARTER_BACKPORT_BOT_PRIVATE_KEY }} + + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + ref: ${{ github.event.pull_request.head.sha }} + token: ${{ steps.app-token.outputs.token }} + + - name: Create backport PRs + uses: korthout/backport-action@436145e922f9561fc5ea157ff406f21af2d6b363 # v3.2.0 + with: + # Config README: https://github.com/korthout/backport-action#backport-action + github_token: ${{ steps.app-token.outputs.token }} + conflict_resolution: draft_commit_conflicts + merge_commits: skip + pull_description: |- + Bot-based backport to `${target_branch}`, triggered by a label in #${pull_number}. +