---
name: Backport Assistant Runner

on:
  pull_request_target:
    types:
      - closed
      - labeled

jobs:
  backport:
    if: github.event.pull_request.merged
    runs-on: ubuntu-latest
    container: hashicorpdev/backport-assistant:0.3.4
    steps:
      - name: Backport changes to stable-website
        run: |
          backport-assistant backport -merge-method=squash
        env:
          BACKPORT_LABEL_REGEXP: "backport/(?P<target>website)"
          BACKPORT_TARGET_TEMPLATE: "stable-{{.target}}"
          # Enabling this option increased the number of backport failures.
          BACKPORT_MERGE_COMMIT: false
          GITHUB_TOKEN: ${{ secrets.ELEVATED_GITHUB_TOKEN }}
      - name: Backport changes to targeted release branch
        run: |
          backport-assistant backport -merge-method=squash
        env:
          BACKPORT_LABEL_REGEXP: "backport/(?P<target>\\d+\\.\\d+\\.[+\\w]+)"
          BACKPORT_TARGET_TEMPLATE: "release/{{.target}}"
          # Enabling this option increased the number of backport failures.
          BACKPORT_MERGE_COMMIT: false
          GITHUB_TOKEN: ${{ secrets.ELEVATED_GITHUB_TOKEN }}

  handle-failure:
    needs:
      - backport
    if: always() && needs.backport.result == 'failure'
    runs-on: ${{ endsWith(github.repository, '-enterprise') && fromJSON('["self-hosted", "ondemand", "linux"]') || 'ubuntu-latest' }}
    steps:
      - uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
      - uses: ./.github/actions/vault-secrets
        with:
          paths: |-
            kv/data/teams/nomad/slack-webhooks feed-nomad | SLACK_FEED_NOMAD ;
      - name: Send slack notification on failure
        uses: slackapi/slack-github-action@e28cf165c92ffef168d23c5c9000cffc8a25e117 # v1.24.0
        with:
          payload: |
            {
              "text": ":x::arrow_right_hook::nomad-sob: Backport run *FAILED*",
              "attachments": [
                {
                  "color": "#C41E3A",
                  "blocks": [
                    {
                      "type": "section",
                      "fields": [
                        {
                          "type": "mrkdwn",
                          "text": "*Pull Request:*\n<${{ github.event.pull_request.html_url}}|${{ github.repository }}#${{ github.event.pull_request.number}}>"
                        },
                        {
                          "type": "mrkdwn",
                          "text": "*From:*\n@${{ github.event.sender.login }}"
                        },
                        {
                          "type": "mrkdwn",
                          "text": "*Run:*\n<${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}|${{ github.run_id }}>"
                        }
                      ]
                    }
                  ]
                }
              ]
            }
        env:
          SLACK_WEBHOOK_URL: ${{ env.SLACK_FEED_NOMAD || secrets.BACKPORT_ASSISTANT_FAILURE_SLACK }}
          SLACK_WEBHOOK_TYPE: INCOMING_WEBHOOK
permissions:
  contents: read
  id-token: write
