99 pull_request :
1010 release :
1111 types : [published]
12- check_suite :
13- types : [rerequested]
1412
1513concurrency :
1614 group : ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
1715 cancel-in-progress : true
1816
1917jobs :
2018 scheduler :
21- runs-on : ubuntu-20 .04
19+ runs-on : ubuntu-22 .04
2220 outputs :
23- build-doc : ${{ steps.set-matrix.outputs.build-doc }}
24- build-boards : ${{ steps.set-matrix.outputs.build-boards }}
25- build-windows : ${{ steps.set-matrix.outputs.build-windows }}
26- boards-aarch : ${{ steps.set-matrix.outputs.boards-aarch }}
27- boards-arm : ${{ steps.set-matrix.outputs.boards-arm }}
28- boards-atmel : ${{ steps.set-matrix.outputs.boards-atmel }}
29- boards-esp : ${{ steps.set-matrix.outputs.boards-esp }}
30- boards-riscv : ${{ steps.set-matrix.outputs.boards-riscv }}
21+ docs : ${{ steps.set-matrix.outputs.docs }}
22+ ports : ${{ steps.set-matrix.outputs.ports }}
23+ windows : ${{ steps.set-matrix.outputs.windows }}
3124 cp-version : ${{ steps.set-up-submodules.outputs.version }}
3225 steps :
3326 - name : Dump GitHub context
@@ -69,26 +62,27 @@ jobs:
6962 PULL : ${{ github.event.number }}
7063 GITHUB_TOKEN : ${{ github.token }}
7164 EXCLUDE_COMMIT : ${{ github.event.pull_request.head.sha }}
72- - name : Set head sha
65+ - name : Set head sha (pull)
7366 if : github.event_name == 'pull_request'
7467 run : echo "HEAD_SHA=${{ github.event.pull_request.head.sha }}" >> $GITHUB_ENV
75- - name : Set base sha
68+ - name : Set base sha (pull)
7669 if : github.event_name == 'pull_request'
77- run : |
78- git fetch --no-tags --no-recurse-submodules --depth=$((DEPTH + 1)) origin $HEAD_SHA
79- echo "BASE_SHA=$(git rev-list $HEAD_SHA --skip=$DEPTH --max-count=1)" >> $GITHUB_ENV
70+ run : git cat-file -e $SHA && echo "BASE_SHA=$SHA" >> $GITHUB_ENV || true
8071 env :
81- DEPTH : ${{ steps.get-last-commit-with-checks.outputs.commit_depth || github.event.pull_request.commits }}
82- - name : Get changes
83- id : get-changes
84- if : github.event_name == 'pull_request'
85- run : echo $(git diff $BASE_SHA...$HEAD_SHA --name-only) | echo "changed_files=[\"$(sed "s/ /\", \"/g")\"]" >> $GITHUB_OUTPUT
72+ SHA : ${{ steps.get-last-commit-with-checks.outputs.commit_sha || github.event.pull_request.base.sha }}
73+ - name : Set head sha (push)
74+ if : github.event_name == 'push'
75+ run : echo "HEAD_SHA=${{ github.event.after }}" >> $GITHUB_ENV
76+ - name : Set base sha (push)
77+ if : github.event_name == 'push'
78+ run : git cat-file -e $SHA && echo "BASE_SHA=$SHA" >> $GITHUB_ENV || true
79+ env :
80+ SHA : ${{ github.event.before }}
8681 - name : Set matrix
8782 id : set-matrix
88- working-directory : tools
8983 run : python3 -u ci_set_matrix.py
84+ working-directory : tools
9085 env :
91- CHANGED_FILES : ${{ steps.get-changes.outputs.changed_files }}
9286 LAST_FAILED_JOBS : ${{ steps.get-last-commit-with-checks.outputs.check_runs }}
9387
9488 tests :
9993
10094 mpy-cross :
10195 needs : scheduler
102- if : needs.scheduler.outputs.build-boards == 'True '
96+ if : needs.scheduler.outputs.ports != '{} '
10397 uses : ./.github/workflows/build-mpy-cross.yml
10498 secrets : inherit
10599 with :
@@ -108,7 +102,7 @@ jobs:
108102 mpy-cross-mac :
109103 runs-on : macos-11
110104 needs : scheduler
111- if : needs.scheduler.outputs.build-boards == 'True '
105+ if : needs.scheduler.outputs.ports != '{} '
112106 env :
113107 CP_VERSION : ${{ needs.scheduler.outputs.cp-version }}
114108 steps :
@@ -160,10 +154,10 @@ jobs:
160154 AWS_ACCESS_KEY_ID : ${{ secrets.AWS_ACCESS_KEY_ID }}
161155 AWS_SECRET_ACCESS_KEY : ${{ secrets.AWS_SECRET_ACCESS_KEY }}
162156
163- build-doc :
157+ docs :
164158 runs-on : ubuntu-22.04
165159 needs : scheduler
166- if : needs.scheduler.outputs.build-doc == 'True'
160+ if : needs.scheduler.outputs.docs == 'True'
167161 env :
168162 CP_VERSION : ${{ needs.scheduler.outputs.cp-version }}
169163 steps :
@@ -218,10 +212,10 @@ jobs:
218212 [ -z "$TWINE_USERNAME" ] || echo "Uploading dev release to PyPi"
219213 [ -z "$TWINE_USERNAME" ] || twine upload circuitpython-stubs/dist/*
220214
221- build- windows :
215+ windows :
222216 runs-on : windows-2022
223217 needs : scheduler
224- if : needs.scheduler.outputs.build- windows == 'True'
218+ if : needs.scheduler.outputs.windows == 'True'
225219 env :
226220 CP_VERSION : ${{ needs.scheduler.outputs.cp-version }}
227221 defaults :
@@ -286,52 +280,15 @@ jobs:
286280 # ERROR: Platform MINGW64_NT-10.0-17763-x86_64 appears to be unsupported
287281 # https://github.com/espressif/esp-idf/issues/7062
288282
289- aarch :
290- needs : [scheduler, mpy-cross, tests]
291- if : ${{ needs.scheduler.outputs.boards-aarch != '[]' }}
292- uses : ./.github/workflows/build-boards.yml
293- secrets : inherit
294- with :
295- platform : aarch
296- boards : ${{ needs.scheduler.outputs.boards-aarch }}
297- cp-version : ${{ needs.scheduler.outputs.cp-version }}
298-
299- arm :
300- needs : [scheduler, mpy-cross, tests]
301- if : ${{ needs.scheduler.outputs.boards-arm != '[]' }}
302- uses : ./.github/workflows/build-boards.yml
303- secrets : inherit
304- with :
305- platform : arm
306- boards : ${{ needs.scheduler.outputs.boards-arm }}
307- cp-version : ${{ needs.scheduler.outputs.cp-version }}
308-
309- atmel :
310- needs : [scheduler, mpy-cross, tests]
311- if : ${{ needs.scheduler.outputs.boards-atmel != '[]' }}
312- uses : ./.github/workflows/build-boards.yml
313- secrets : inherit
314- with :
315- platform : arm
316- boards : ${{ needs.scheduler.outputs.boards-atmel }}
317- cp-version : ${{ needs.scheduler.outputs.cp-version }}
318-
319- esp :
320- needs : [scheduler, mpy-cross, tests]
321- if : ${{ needs.scheduler.outputs.boards-esp != '[]' }}
322- uses : ./.github/workflows/build-boards.yml
323- secrets : inherit
324- with :
325- platform : esp
326- boards : ${{ needs.scheduler.outputs.boards-esp }}
327- cp-version : ${{ needs.scheduler.outputs.cp-version }}
328-
329- riscv :
283+ ports :
330284 needs : [scheduler, mpy-cross, tests]
331- if : ${{ needs.scheduler.outputs.boards-riscv != '[]' }}
285+ if : needs.scheduler.outputs.ports != '{}'
332286 uses : ./.github/workflows/build-boards.yml
333287 secrets : inherit
288+ strategy :
289+ fail-fast : false
290+ matrix :
291+ port : ${{ fromJSON(needs.scheduler.outputs.ports).ports }}
334292 with :
335- platform : riscv
336- boards : ${{ needs.scheduler.outputs.boards-riscv }}
293+ boards : ${{ toJSON(fromJSON(needs.scheduler.outputs.ports)[matrix.port]) }}
337294 cp-version : ${{ needs.scheduler.outputs.cp-version }}
0 commit comments