Skip to content

Commit 13ead99

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 commit messages to decide what tests to run, for example if "[test_non_bootstrapped]" anywhere in the commit message of a PR, 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 947fb5b commit 13ead99

File tree

1 file changed

+77
-30
lines changed

1 file changed

+77
-30
lines changed

.github/workflows/ci.yaml

+77-30
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.head_commit.message, '[skip ci]')
29+
&& contains(github.event.head_commit.message, '[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.head_commit.message, '[skip ci]')
68+
&& !contains(github.event.head_commit.message, '[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.head_commit.message, '[skip ci]')
102+
&& !contains(github.event.head_commit.message, '[skip test_windows]')
103+
)"
83104

84105
steps:
85106
- name: Git Checkout
@@ -101,6 +122,16 @@ 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+
|| (
127+
github.event_name == 'push'
128+
&& !startsWith(github.event.ref, 'refs/tags/sbt-dotty-'
129+
)
130+
|| (
131+
github.event_name == 'pull_request'
132+
&& !contains(github.event.head_commit.message, '[skip ci]')
133+
&& !contains(github.event.head_commit.message, '[skip community_build]')
134+
)"
104135

105136
steps:
106137
- name: Checkout cleanup script
@@ -129,6 +160,12 @@ jobs:
129160
- ${{ github.workspace }}/../../cache/sbt:/root/.sbt
130161
- ${{ github.workspace }}/../../cache/ivy:/root/.ivy2/cache
131162
- ${{ github.workspace }}/../../cache/general:/root/.cache
163+
if: "github.event_name == 'schedule'
164+
|| (github.event_name == 'push' && !startsWith(github.event.ref, 'refs/tags/sbt-dotty-')
165+
|| (
166+
!contains(github.event.head_commit.message, '[skip ci]')
167+
&& !contains(github.event.head_commit.message, '[skip community_build]')
168+
)"
132169

133170
steps:
134171
- name: Checkout cleanup script
@@ -157,11 +194,16 @@ jobs:
157194
- ${{ github.workspace }}/../../cache/sbt:/root/.sbt
158195
- ${{ github.workspace }}/../../cache/ivy:/root/.ivy2/cache
159196
- ${{ 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'
197+
if: "github.event_name == 'schedule'
198+
|| (
199+
github.event_name == 'push'
200+
&& startsWith(github.event.ref, 'refs/tags/')
201+
)
202+
|| (
203+
github.event_name == 'pull_request'
204+
&& !contains(github.event.head_commit.message, '[skip ci]')
205+
&& contains(github.event.head_commit.message, '[test_sbt]')
206+
)"
165207

166208
steps:
167209
- name: Checkout cleanup script
@@ -188,12 +230,17 @@ jobs:
188230
- ${{ github.workspace }}/../../cache/ivy:/root/.ivy2/cache
189231
- ${{ github.workspace }}/../../cache/general:/root/.cache
190232

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'"
233+
if: "github.event_name == 'schedule'
234+
|| (
235+
github.event_name == 'push'
236+
&& startsWith(github.event.ref, 'refs/tags/')
237+
&& !startsWith(github.event.ref, 'refs/tags/sbt-dotty-')
238+
)
239+
|| (
240+
github.event_name == 'pull_request'
241+
&& !contains(github.event.head_commit.message, '[skip ci]')
242+
&& contains(github.event.head_commit.message, '[test_java8]')
243+
)"
197244

198245
steps:
199246
- name: Set JDK 8 as default
@@ -225,7 +272,7 @@ jobs:
225272
- ${{ github.workspace }}/../../cache/ivy:/root/.ivy2/cache
226273
- ${{ github.workspace }}/../../cache/general:/root/.cache
227274
needs: [test_non_bootstrapped, test, community_build_a, community_build_b, test_sbt, test_java8]
228-
if: github.event_name == 'schedule'
275+
if: "github.event_name == 'schedule'"
229276
env:
230277
NIGHTLYBUILD: yes
231278
PGP_PW: ${{ secrets.PGP_PW }} # PGP passphrase
@@ -259,7 +306,7 @@ jobs:
259306
- ${{ github.workspace }}/../../cache/ivy:/root/.ivy2/cache
260307
- ${{ github.workspace }}/../../cache/general:/root/.cache
261308
needs: [publish_nightly]
262-
if: github.event_name == 'schedule'
309+
if: "github.event_name == 'schedule'"
263310
env:
264311
NIGHTLYBUILD: yes
265312
BOT_TOKEN: ${{ secrets.BOT_TOKEN }} # If you need to change this:
@@ -300,9 +347,9 @@ jobs:
300347
- ${{ github.workspace }}/../../cache/ivy:/root/.ivy2/cache
301348
- ${{ github.workspace }}/../../cache/general:/root/.cache
302349
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-')
350+
if: "github.event_name == 'push'
351+
&& startsWith(github.event.ref, 'refs/tags/')
352+
&& !startsWith(github.event.ref, 'refs/tags/sbt-dotty-')"
306353

307354
env:
308355
RELEASEBUILD: yes
@@ -382,9 +429,9 @@ jobs:
382429
- ${{ github.workspace }}/../../cache/ivy:/root/.ivy2/cache
383430
- ${{ github.workspace }}/../../cache/general:/root/.cache
384431
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-')
432+
if: "github.event_name == 'push'
433+
&& startsWith(github.event.ref, 'refs/tags/')
434+
&& !startsWith(github.event.ref, 'refs/tags/sbt-dotty-')"
388435

389436
env:
390437
RELEASEBUILD: yes
@@ -426,8 +473,8 @@ jobs:
426473
- ${{ github.workspace }}/../../cache/ivy:/root/.ivy2/cache
427474
- ${{ github.workspace }}/../../cache/general:/root/.cache
428475
needs: [community_build_a, community_build_b, test_sbt]
429-
if: github.event_name == 'push' &&
430-
startsWith(github.event.ref, 'refs/tags/sbt-dotty-')
476+
if: "github.event_name == 'push'
477+
&& startsWith(github.event.ref, 'refs/tags/sbt-dotty-')"
431478

432479
env:
433480
RELEASEBUILD: yes

0 commit comments

Comments
 (0)