1+ name : Test pull request on push
2+
3+ on :
4+ pull_request :
5+ paths : ['**']
6+
7+ # Cancel previous jobs if PR gets another push
8+ concurrency :
9+ group : PR-test-${{ github.ref }}
10+ cancel-in-progress : true
11+
12+ jobs :
13+ test :
14+ runs-on : ubuntu-latest
15+ env :
16+ VERSION_SUFFIX : " PR-${{ github.event.number }}"
17+ steps :
18+ - uses : actions/checkout@v4
19+ - name : Check Path Filter
20+ uses : dorny/paths-filter@v3
21+ id : filter
22+ with :
23+ filters : |
24+ code:
25+ - 'src/**'
26+ - '*.gradle'
27+ - 'gradle.properties'
28+ - 'gradlew*'
29+ - 'gradle/**'
30+ - name : Setup Build
31+ if : steps.filter.outputs.code == 'true'
32+ uses : ./.github/actions/build_setup
33+ - name : Run GameTests
34+ if : steps.filter.outputs.code == 'true'
35+ id : gametest
36+ continue-on-error : true
37+ run : ./gradlew runGameTestServer
38+ - name : Update “Tests Passed” / “Tests Failed” labels
39+ if : steps.filter.outputs.code == 'true' && github.event.pull_request.head.repo.full_name == github.repository
40+ uses : actions/github-script@v7
41+ with :
42+ script : |
43+ const [add, remove] = {
44+ success: ['Tests: Passed','Tests: Failed'],
45+ failure: ['Tests: Failed','Tests: Passed']
46+ }['${{ steps.gametest.outcome }}'];
47+
48+ const { owner, repo } = context.repo;
49+ const issue_number = context.payload.pull_request.number;
50+
51+ await github.rest.issues
52+ .addLabels({ owner, repo, issue_number, labels: [add] })
53+ .catch(() => {});
54+
55+ await github.rest.issues
56+ .removeLabel({ owner, repo, issue_number, name: remove })
57+ .catch(() => {});
58+ - name : Fail on GameTest failures
59+ if : steps.filter.outputs.code == 'true' && steps.gametest.outcome == 'failure'
60+ run : exit 1
0 commit comments