-
Notifications
You must be signed in to change notification settings - Fork 276
137 lines (121 loc) · 4.81 KB
/
auto-merge.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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
# Workflow to cherry-pick changes from main to release branch.
name: auto-merge
on:
push:
branches: [ main ]
jobs:
build-and-test:
strategy:
fail-fast: false
matrix:
os: [ ubuntu-latest, macos-latest ]
# The type of runner that the job will run on
runs-on: ${{ matrix.os }}
steps:
# Checkout
- uses: actions/checkout@v2
with:
fetch-depth: 0
ref: 1.0.14-release
- name: merge commits from main to release branch
run: |
# Cherry pick new changes from main, except for version bumps.
# A commit is a version bump IFF it touches third_party/prebuilt/repo
DONT_PICK=$(cat <<EOF
76ac8de5cd4769b2cfd7c80ad156309c5f27d52a
9675c5de0f689cb8563a0b6e1142a78747e8675c
fc22e8f947fb533e3f728252882c9dbe3f4d810d
caa3e0843dd169dcc3486d1ac28d16489324d564
1ed2d3b709adc53450eb1c09fffe33a50459cc88
f0647fd2acffa78454700eb4750bf77caab05076
EOF
)
git config --global user.email "kotlin-symbol-processing@google.com"
git config --global user.name "KSP Auto Pick"
MERGE_BASE=$(git merge-base HEAD origin/main)
CANDIDATES=$(git log --pretty=%H $MERGE_BASE..origin/main)
PICKED=$(git log $MERGE_BASE..HEAD | sed -n "s/^[ ]*(cherry picked from commit \([a-z0-9]*\))$/\1/p")
VERSION_BUMPS=$(git log $MERGE_BASE..origin/main --pretty=%H --grep UPDATE_KOTLIN_VERSION)
TO_PICK=$(grep -Fxv -f <(echo "$PICKED"; echo "$VERSION_BUMPS"; echo "$DONT_PICK") <(echo "$CANDIDATES") | awk '{a[i++]=$0} END {for (j=i-1; j>=0;) print a[j--] }')
echo Picking $TO_PICK
if [ -n "$TO_PICK" ]; then git cherry-pick -x $TO_PICK; fi
- name: Setup Java 9
uses: actions/setup-java@v1.4.3
with:
java-version: '9'
java-package: jdk
architecture: x64
- name: set JDK_9 environment variable for kotlin compiler
env:
ACTIONS_ALLOW_UNSECURE_COMMANDS: true
run: echo ::set-env name=JDK_9::$(echo $JAVA_HOME)
- name: Setup Java 11
uses: actions/setup-java@v1.4.3
with:
java-version: '11'
java-package: jdk
architecture: x64
# Build cache
- name: Cache Gradle Cache
uses: actions/cache@v2
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle.kts') }}-${{ hashFiles('**/gradle.properties') }}
# An ordered list of keys to use for restoring the cache if no cache hit occurred for key
restore-keys: |
${{ runner.os }}-gradle-
- name: Cache gradle wrapper
uses: actions/cache@v2
with:
path: ~/.gradle/wrapper
key: ${{ runner.os }}-gradle-wrapper-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties') }}
# Check API compatibility
- name: API compatibility check
run: ./gradlew :api:checkApi
# Run ksp generated tests
- name: test
run: ./gradlew --stacktrace --info test
- name: Upload test results
if: always()
uses: actions/upload-artifact@v3
with:
name: test-reports
path: |
compiler-plugin/build/reports
integration-tests/build/reports
gradle-plugin/build/reports
common-util/build/reports
kotlin-analysis-api/build/reports
pick-and-push:
needs: build-and-test
runs-on: ubuntu-latest
steps:
# Checkout
- uses: actions/checkout@v2
with:
fetch-depth: 0
ref: 1.0.14-release
- name: merge commits from main to release branch
run: |
# Cherry pick new changes from main, except for version bumps.
# A commit is a version bump IFF it touches third_party/prebuilt/repo
DONT_PICK=$(cat <<EOF
76ac8de5cd4769b2cfd7c80ad156309c5f27d52a
9675c5de0f689cb8563a0b6e1142a78747e8675c
fc22e8f947fb533e3f728252882c9dbe3f4d810d
caa3e0843dd169dcc3486d1ac28d16489324d564
1ed2d3b709adc53450eb1c09fffe33a50459cc88
f0647fd2acffa78454700eb4750bf77caab05076
EOF
)
git config --global user.email "kotlin-symbol-processing@google.com"
git config --global user.name "KSP Auto Pick"
MERGE_BASE=$(git merge-base HEAD origin/main)
CANDIDATES=$(git log --pretty=%H $MERGE_BASE..origin/main)
PICKED=$(git log $MERGE_BASE..HEAD | sed -n "s/^[ ]*(cherry picked from commit \([a-z0-9]*\))$/\1/p")
VERSION_BUMPS=$(git log $MERGE_BASE..origin/main --pretty=%H --grep UPDATE_KOTLIN_VERSION)
TO_PICK=$(grep -Fxv -f <(echo "$PICKED"; echo "$VERSION_BUMPS"; echo "$DONT_PICK") <(echo "$CANDIDATES") | tac)
echo Picking $TO_PICK
if [ -n "$TO_PICK" ]; then git cherry-pick -x $TO_PICK; fi
- name: push to release branch
run: git push origin