Skip to content

Commit 6a68ad8

Browse files
committed
Split the CI code size measurement job into two jobs: one with read-only
permission to build (and potentially run) untrusted code, and another with PR-write permission that only reports the sizes from the first job.
1 parent ebfc57e commit 6a68ad8

File tree

1 file changed

+17
-4
lines changed

1 file changed

+17
-4
lines changed

.github/workflows/check-binary-size.yml

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,15 @@ on:
99
branches:
1010
- master
1111

12+
# Responsibility is divided between two jobs "measure" and "report", so that the
13+
# job that builds (and potentnially runs) untrusted code does not have PR write
14+
# permission, and vice-versa.
1215
jobs:
13-
test:
16+
measure:
1417
name: Check binary size
1518
runs-on: ubuntu-latest
1619
permissions:
17-
pull-requests: write
20+
contents: read
1821
env:
1922
# This cannot be used as a context variable in the 'uses' key later. If it
2023
# changes, update those steps too.
@@ -23,6 +26,9 @@ jobs:
2326
TEST_MAIN_RS: foo.rs
2427
BASE_COMMIT: ${{ github.event.pull_request.base.sha }}
2528
HEAD_COMMIT: ${{ github.event.pull_request.head.sha }}
29+
outputs:
30+
binary-size-reference: ${{ steps.size-reference.outputs.test-binary-size }}
31+
binary-size-updated: ${{ steps.size-updated.outputs.test-binary-size }}
2632
steps:
2733
- name: Print info
2834
shell: bash
@@ -81,11 +87,18 @@ jobs:
8187
main-rs: ${{ env.TEST_MAIN_RS }}
8288
rustc-dir: ${{ env.RUSTC_DIR }}
8389
id: size-updated
90+
report:
91+
name: Report binary size changes
92+
runs-on: ubuntu-latest
93+
needs: measure
94+
permissions:
95+
pull-requests: write
96+
steps:
8497
- name: Post a PR comment if the size has changed
8598
uses: actions/github-script@v6
8699
env:
87-
SIZE_REFERENCE: ${{ steps.size-reference.outputs.test-binary-size }}
88-
SIZE_UPDATED: ${{ steps.size-updated.outputs.test-binary-size }}
100+
SIZE_REFERENCE: ${{ needs.measure.outputs.binary-size-reference }}
101+
SIZE_UPDATED: ${{ needs.measure.outputs.binary-size-updated }}
89102
with:
90103
script: |
91104
const reference = process.env.SIZE_REFERENCE;

0 commit comments

Comments
 (0)