summaryrefslogtreecommitdiff
path: root/.github/workflows/issue-release-workflow.yml
blob: b30782d472a1f4973389b6ca79c8cd06852764b1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
# This contains the workflow definitions that allow users to test backports
# to the release branch using comments on issues.
#
# /cherry-pick <commit> <...>
#
# This comment will attempt to cherry-pick the given commits to the latest
# release branch (release/Y.x) and if successful, push the result to a branch
# on github.
#
# /branch <owner>/<repo>/<branch>
#
# This comment will create a pull request from <branch> to the latest release
# branch.

name: Issue Release Workflow

permissions:
  contents: read

on:
  issue_comment:
    types:
      - created
      - edited
  issues:
    types:
      - opened

env:
  COMMENT_BODY: ${{ github.event.action == 'opened' && github.event.issue.body || github.event.comment.body  }}

jobs:
  backport-commits:
    name: Backport Commits
    runs-on: ubuntu-latest
    if: >-
      (github.repository == 'llvm/llvm-project') &&
      !startswith(github.event.comment.body, '<!--IGNORE-->') &&
      contains(github.event.action == 'opened' && github.event.issue.body || github.event.comment.body, '/cherry-pick')
    steps:
      - name: Fetch LLVM sources
        uses: actions/checkout@v3
        with:
          repository: llvm/llvm-project
          # GitHub stores the token used for checkout and uses it for pushes
          # too, but we want to use a different token for pushing, so we need
          # to disable persist-credentials here.
          persist-credentials: false
          fetch-depth: 0

      - name: Setup Environment
        run: |
          pip install -r ./llvm/utils/git/requirements.txt
          ./llvm/utils/git/github-automation.py --token ${{ github.token }} setup-llvmbot-git

      - name: Backport Commits
        run: |
          printf "$COMMENT_BODY" |
          ./llvm/utils/git/github-automation.py \
          --repo $GITHUB_REPOSITORY \
          --token ${{ secrets.RELEASE_WORKFLOW_PUSH_SECRET }} \
          release-workflow \
          --issue-number ${{ github.event.issue.number }} \
          --phab-token ${{ secrets.RELEASE_WORKFLOW_PHAB_TOKEN }} \
          auto

  create-pull-request:
    name: Create Pull Request
    runs-on: ubuntu-latest
    if: >-
      (github.repository == 'llvm/llvm-project') &&
      !startswith(github.event.comment.body, '<!--IGNORE-->') &&
      contains(github.event.comment.body, '/branch')

    steps:
      - name: Fetch LLVM sources
        uses: actions/checkout@v3
        with:
          persist-credentials: false

      - name: Setup Environment
        run: |
          pip install -r ./llvm/utils/git/requirements.txt

      - name: Create Pull Request
        run: |
          printf "$COMMENT_BODY" |
          ./llvm/utils/git/github-automation.py \
          --repo $GITHUB_REPOSITORY \
          --token ${{ secrets.RELEASE_WORKFLOW_PUSH_SECRET }} \
          release-workflow \
          --issue-number ${{ github.event.issue.number }} \
          --phab-token ${{ secrets.RELEASE_WORKFLOW_PHAB_TOKEN }} \
          auto