name: Backport
on:
  pull_request_target:
    types: [closed, labeled]
permissions:
  contents: read
jobs:
  backport:
    name: Backport Pull Request
    permissions:
      # for korthout/backport-action
      contents: write
      pull-requests: write
    if: github.repository_owner == 'NixOS' && github.event.pull_request.merged == true && (github.event_name != 'labeled' || startsWith('backport', github.event.label.name))
    runs-on: ubuntu-24.04-arm
    steps:
      - name: Generate GitHub App token
        id: generate-token
        uses: actions/create-github-app-token@v3
        with:
          app-id: ${{ vars.CI_APP_ID }}
          private-key: ${{ secrets.CI_APP_PRIVATE_KEY }}
      - uses: actions/checkout@v7.0.1
        with:
          ref: ${{ github.event.pull_request.head.sha }}
          # required to find all branches
          fetch-depth: 0
      - name: Create backport PRs
        uses: korthout/backport-action@2e830a1d0b8269505846ddd407a70876913ad1f8 # v4.6.0
        id: backport
        with:
          # Config README: https://github.com/korthout/backport-action#backport-action
          github_token: ${{ steps.generate-token.outputs.token }}
          github_workspace: ${{ github.workspace }}
          auto_merge_enabled: true
          pull_description: |-
            Automatic backport to `${target_branch}`, triggered by a label in #${pull_number}.
