forked from flutter/flutter
-
Notifications
You must be signed in to change notification settings - Fork 0
75 lines (71 loc) · 3.38 KB
/
easy-cp.yml
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
# Copyright 2023 The Flutter Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
name: Cherry-pick Labeled PR to Release Branch
on:
pull_request:
branches: master
types: [labeled]
permissions: write-all
jobs:
cherrypick_to_release:
name: cherrypick_to_release
runs-on: ubuntu-latest
if: |
(github.event.label.name == format('cp{0} beta', ':') || github.event.label.name == format('cp{0} stable', ':')) &&
(github.event.pull_request.merged == true)
steps:
- name: Get Release Channel
run: |
echo "CHANNEL=$(echo ${{ github.event.label.name }} | cut -d ':' -f 2 | xargs)" >> $GITHUB_ENV
- name: Get Release Candidate Branch
run: |
RELEASE_BRANCH=$(curl https://raw.githubusercontent.com/flutter/flutter/$CHANNEL/bin/internal/release-candidate-branch.version)
echo "RELEASE_BRANCH=$(echo $RELEASE_BRANCH | tr -d '\n')" >> $GITHUB_ENV
- name: Get Cherry Pick PR
run: |
echo "COMMIT_SHA=$(echo ${{ github.event.pull_request.merge_commit_sha }})" >> $GITHUB_ENV
- name: Checkout Flutter Repo
uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11
with:
repository: flutter/flutter
token: ${{ github.token }}
path: flutter
ref: master
# Checkout all history commits on master branch, so that the cp commit is a known object
fetch-depth: 0
# use same name when checking out branch, since the marketplace action does a hard reset.
- name: Attempt CP
id: attempt-cp
working-directory: ./flutter
run: |
git config user.name "GitHub Actions Bot"
git config user.email "<>"
git fetch origin $RELEASE_BRANCH
git fetch origin master
git checkout -b $RELEASE_BRANCH --track origin/$RELEASE_BRANCH
git cherry-pick $COMMIT_SHA
# TODO(xilaizhang): remove this step once the template is available on release branches.
- name: Get CP Template
run: |
curl -o PULL_REQUEST_CP_TEMPLATE.md https://raw.githubusercontent.com/flutter/flutter/master/.github/PR_TEMPLATE/PULL_REQUEST_CP_TEMPLATE.md
- name: Create PR on CP success
if: ${{ steps.attempt-cp.conclusion == 'success' }}
uses: peter-evans/create-pull-request@153407881ec5c347639a548ade7d8ad1d6740e38
with:
base: ${{ env.RELEASE_BRANCH }}
branch: cp-${{ env.CHANNEL }}-${{ env.COMMIT_SHA }}
path: flutter
token: ${{ secrets.FLUTTERMIRRORINGBOT_TOKEN}}
labels: |
cp: review
title: '[${{ env.CHANNEL }}-cherrypick] cherrypicks commit ${{ env.COMMIT_SHA }} from PR ${{ github.event.pull_request.title }}'
body-path: PULL_REQUEST_CP_TEMPLATE.md
- name: Leave Comment on CP failure
if: ${{ failure() && steps.attempt-cp.conclusion == 'failure' }}
run: |
FAILURE_MSG="Failed to create CP due to merge conflicts.<br>"
FAILURE_MSG+="You will need to create the PR manually. See [the cherrypick wiki](https://github.com/flutter/flutter/wiki/Flutter-Cherrypick-Process) for more info."
gh pr comment ${{ github.event.pull_request.number }} -R flutter/flutter -b "${FAILURE_MSG}"
env:
GITHUB_TOKEN: ${{ secrets.FLUTTERMIRRORINGBOT_TOKEN }}