Skip to content

Commit 1bd3318

Browse files
committed
Add a way to run specific tests on the CI
With this commit, the CI will look for some magic strings in the body of the PR message (but not in the title of the PR or in individual commit messages) to decide what tests to run, for example if "[test_non_bootstrapped]" appears anywhere in the PR message, the non-bootstrapped tests will be run on top of the normal tests we run for PRs. It's also possible for example to turn off the windows tests with "[skip test_windows]".
1 parent 17d1083 commit 1bd3318

File tree

1 file changed

+75
-30
lines changed

1 file changed

+75
-30
lines changed

.github/workflows/ci.yaml

Lines changed: 75 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,16 @@ jobs:
1818
- ${{ github.workspace }}/../../cache/sbt:/root/.sbt
1919
- ${{ github.workspace }}/../../cache/ivy:/root/.ivy2/cache
2020
- ${{ github.workspace }}/../../cache/general:/root/.cache
21-
if: "(
22-
github.event_name == 'push' &&
23-
!startsWith(github.event.ref, 'refs/tags/sbt-dotty-')
24-
) ||
25-
github.event_name == 'schedule')"
21+
if: "github.event_name == 'schedule'
22+
|| (
23+
github.event_name == 'push'
24+
&& !startsWith(github.event.ref, 'refs/tags/sbt-dotty-')
25+
)
26+
|| (
27+
github.event_name == 'pull_request'
28+
&& !contains(github.event.pull_request.body, '[skip ci]')
29+
&& contains(github.event.pull_request.body, '[test_non_bootstrapped]')
30+
)"
2631
steps:
2732
- name: Set JDK 15 as default
2833
run: echo "/usr/lib/jvm/java-15-openjdk-amd64/bin" >> $GITHUB_PATH
@@ -52,8 +57,16 @@ jobs:
5257
- ${{ github.workspace }}/../../cache/sbt:/root/.sbt
5358
- ${{ github.workspace }}/../../cache/ivy:/root/.ivy2/cache
5459
- ${{ github.workspace }}/../../cache/general:/root/.cache
55-
if: "!(github.event_name == 'push' &&
56-
startsWith(github.event.ref, 'refs/tags/sbt-dotty-'))"
60+
if: "github.event_name == 'schedule'
61+
|| (
62+
github.event_name == 'push'
63+
&& !startsWith(github.event.ref, 'refs/tags/sbt-dotty-')
64+
)
65+
|| (
66+
github.event_name == 'pull_request'
67+
&& !contains(github.event.pull_request.body, '[skip ci]')
68+
&& !contains(github.event.pull_request.body, '[skip test]')
69+
)"
5770

5871
steps:
5972
- name: Set JDK 15 as default
@@ -78,8 +91,16 @@ jobs:
7891
7992
test_windows:
8093
runs-on: [self-hosted, Windows]
81-
if: "!(github.event_name == 'push' &&
82-
startsWith(github.event.ref, 'refs/tags/sbt-dotty-'))"
94+
if: "github.event_name == 'schedule'
95+
|| (
96+
github.event_name == 'push'
97+
&& !startsWith(github.event.ref, 'refs/tags/sbt-dotty-')
98+
)
99+
|| (
100+
github.event_name == 'pull_request'
101+
&& !contains(github.event.pull_request.body, '[skip ci]')
102+
&& !contains(github.event.pull_request.body, '[skip test_windows]')
103+
)"
83104

84105
steps:
85106
- name: Git Checkout
@@ -101,6 +122,13 @@ jobs:
101122
- ${{ github.workspace }}/../../cache/sbt:/root/.sbt
102123
- ${{ github.workspace }}/../../cache/ivy:/root/.ivy2/cache
103124
- ${{ github.workspace }}/../../cache/general:/root/.cache
125+
if: "github.event_name == 'schedule'
126+
|| github.event_name == 'push'
127+
|| (
128+
github.event_name == 'pull_request'
129+
&& !contains(github.event.pull_request.body, '[skip ci]')
130+
&& !contains(github.event.pull_request.body, '[skip community_build]')
131+
)"
104132

105133
steps:
106134
- name: Checkout cleanup script
@@ -129,6 +157,13 @@ jobs:
129157
- ${{ github.workspace }}/../../cache/sbt:/root/.sbt
130158
- ${{ github.workspace }}/../../cache/ivy:/root/.ivy2/cache
131159
- ${{ github.workspace }}/../../cache/general:/root/.cache
160+
if: "github.event_name == 'schedule'
161+
|| github.event_name == 'push'
162+
|| (
163+
github.event_name == 'pull_request'
164+
&& !contains(github.event.pull_request.body, '[skip ci]')
165+
&& !contains(github.event.pull_request.body, '[skip community_build]')
166+
)"
132167

133168
steps:
134169
- name: Checkout cleanup script
@@ -157,11 +192,16 @@ jobs:
157192
- ${{ github.workspace }}/../../cache/sbt:/root/.sbt
158193
- ${{ github.workspace }}/../../cache/ivy:/root/.ivy2/cache
159194
- ${{ github.workspace }}/../../cache/general:/root/.cache
160-
if: (
161-
github.event_name == 'push' &&
162-
startsWith(github.event.ref, 'refs/tags/')
163-
) ||
164-
github.event_name == 'schedule'
195+
if: "github.event_name == 'schedule'
196+
|| (
197+
github.event_name == 'push'
198+
&& startsWith(github.event.ref, 'refs/tags/')
199+
)
200+
|| (
201+
github.event_name == 'pull_request'
202+
&& !contains(github.event.pull_request.body, '[skip ci]')
203+
&& contains(github.event.pull_request.body, '[test_sbt]')
204+
)"
165205

166206
steps:
167207
- name: Checkout cleanup script
@@ -188,12 +228,17 @@ jobs:
188228
- ${{ github.workspace }}/../../cache/ivy:/root/.ivy2/cache
189229
- ${{ github.workspace }}/../../cache/general:/root/.cache
190230

191-
if: "(
192-
github.event_name == 'push' &&
193-
startsWith(github.event.ref, 'refs/tags/') &&
194-
!startsWith(github.event.ref, 'refs/tags/sbt-dotty-')
195-
) ||
196-
github.event_name == 'schedule'"
231+
if: "github.event_name == 'schedule'
232+
|| (
233+
github.event_name == 'push'
234+
&& startsWith(github.event.ref, 'refs/tags/')
235+
&& !startsWith(github.event.ref, 'refs/tags/sbt-dotty-')
236+
)
237+
|| (
238+
github.event_name == 'pull_request'
239+
&& !contains(github.event.pull_request.body, '[skip ci]')
240+
&& contains(github.event.pull_request.body, '[test_java8]')
241+
)"
197242

198243
steps:
199244
- name: Set JDK 8 as default
@@ -225,7 +270,7 @@ jobs:
225270
- ${{ github.workspace }}/../../cache/ivy:/root/.ivy2/cache
226271
- ${{ github.workspace }}/../../cache/general:/root/.cache
227272
needs: [test_non_bootstrapped, test, community_build_a, community_build_b, test_sbt, test_java8]
228-
if: github.event_name == 'schedule'
273+
if: "github.event_name == 'schedule'"
229274
env:
230275
NIGHTLYBUILD: yes
231276
PGP_PW: ${{ secrets.PGP_PW }} # PGP passphrase
@@ -259,7 +304,7 @@ jobs:
259304
- ${{ github.workspace }}/../../cache/ivy:/root/.ivy2/cache
260305
- ${{ github.workspace }}/../../cache/general:/root/.cache
261306
needs: [publish_nightly]
262-
if: github.event_name == 'schedule'
307+
if: "github.event_name == 'schedule'"
263308
env:
264309
NIGHTLYBUILD: yes
265310
BOT_TOKEN: ${{ secrets.BOT_TOKEN }} # If you need to change this:
@@ -300,9 +345,9 @@ jobs:
300345
- ${{ github.workspace }}/../../cache/ivy:/root/.ivy2/cache
301346
- ${{ github.workspace }}/../../cache/general:/root/.cache
302347
needs: [test_non_bootstrapped, test, community_build_a, community_build_b, test_sbt, test_java8]
303-
if: github.event_name == 'push' &&
304-
startsWith(github.event.ref, 'refs/tags/') &&
305-
!startsWith(github.event.ref, 'refs/tags/sbt-dotty-')
348+
if: "github.event_name == 'push'
349+
&& startsWith(github.event.ref, 'refs/tags/')
350+
&& !startsWith(github.event.ref, 'refs/tags/sbt-dotty-')"
306351

307352
env:
308353
RELEASEBUILD: yes
@@ -382,9 +427,9 @@ jobs:
382427
- ${{ github.workspace }}/../../cache/ivy:/root/.ivy2/cache
383428
- ${{ github.workspace }}/../../cache/general:/root/.cache
384429
needs: [publish_release]
385-
if: github.event_name == 'push' &&
386-
startsWith(github.event.ref, 'refs/tags/') &&
387-
!startsWith(github.event.ref, 'refs/tags/sbt-dotty-')
430+
if: "github.event_name == 'push'
431+
&& startsWith(github.event.ref, 'refs/tags/')
432+
&& !startsWith(github.event.ref, 'refs/tags/sbt-dotty-')"
388433

389434
env:
390435
RELEASEBUILD: yes
@@ -426,8 +471,8 @@ jobs:
426471
- ${{ github.workspace }}/../../cache/ivy:/root/.ivy2/cache
427472
- ${{ github.workspace }}/../../cache/general:/root/.cache
428473
needs: [community_build_a, community_build_b, test_sbt]
429-
if: github.event_name == 'push' &&
430-
startsWith(github.event.ref, 'refs/tags/sbt-dotty-')
474+
if: "github.event_name == 'push'
475+
&& startsWith(github.event.ref, 'refs/tags/sbt-dotty-')"
431476

432477
env:
433478
RELEASEBUILD: yes

0 commit comments

Comments
 (0)