Skip to content

Commit ad17224

Browse files
committed
Switch to contributor-friendly approach to size deltas CI report
The CI system makes a report of the change to memory usage of the example sketches that results from the changes made in a pull request. It does this via a comment on the PR thread. In order to do that, it needs write permissions in the repository. As a security precaution, workflow runs triggered by a pull request from a fork are not given the necessary write permissions. The workflow was added in the early development phase when the repository was still private. In that situation, the approach of triggering the deltas report from the pull_request event was the best but now the repository is public and it's important to get reports on pull requests that come from forks. So the approach of using a dedicated workflow triggered by the schedule event (which does have write permissions) is better.
1 parent a107dea commit ad17224

File tree

2 files changed

+28
-27
lines changed

2 files changed

+28
-27
lines changed

.github/workflows/compile-examples-private.yml

Lines changed: 4 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,14 @@ on:
2020
workflow_dispatch:
2121
repository_dispatch:
2222

23-
env:
24-
SKETCHES_REPORTS_PATH: sketches-reports
25-
SKETCHES_REPORTS_ARTIFACT_NAME: sketches-reports
26-
2723
jobs:
2824
build:
2925
name: ${{ matrix.board.fqbn }}
3026
runs-on: ubuntu-latest
3127

28+
env:
29+
SKETCHES_REPORTS_PATH: sketches-reports
30+
3231
strategy:
3332
fail-fast: false
3433

@@ -63,26 +62,4 @@ jobs:
6362
with:
6463
if-no-files-found: error
6564
path: ${{ env.SKETCHES_REPORTS_PATH }}
66-
name: ${{ env.SKETCHES_REPORTS_ARTIFACT_NAME }}
67-
68-
report-size-deltas:
69-
needs: build
70-
# Run even if some compilations failed. Only run when there are write permissions.
71-
if: always() && github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository
72-
runs-on: ubuntu-latest
73-
74-
steps:
75-
- name: Download sketches reports artifact
76-
id: download-artifact
77-
continue-on-error: true # If compilation failed for all boards then there are no artifacts
78-
uses: actions/download-artifact@v2
79-
with:
80-
name: ${{ env.SKETCHES_REPORTS_ARTIFACT_NAME }}
81-
path: ${{ env.SKETCHES_REPORTS_PATH }}
82-
83-
- name: Comment size deltas report to PR
84-
uses: arduino/report-size-deltas@v1
85-
# If actions/download-artifact failed, there are no artifacts to report from.
86-
if: steps.download-artifact.outcome == 'success'
87-
with:
88-
sketches-reports-source: ${{ env.SKETCHES_REPORTS_PATH }}
65+
name: ${{ env.SKETCHES_REPORTS_PATH }}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
name: Report Size Deltas
2+
3+
# See: https://docs.github.com/en/actions/reference/events-that-trigger-workflows
4+
on:
5+
push:
6+
paths:
7+
- ".github/workflows/report-size-deltas.ya?ml"
8+
schedule:
9+
# Run at the minimum interval allowed by GitHub Actions.
10+
# Note: GitHub Actions periodically has outages which result in workflow failures.
11+
# In this event, the workflows will start passing again once the service recovers.
12+
- cron: "*/5 * * * *"
13+
workflow_dispatch:
14+
repository_dispatch:
15+
16+
jobs:
17+
report:
18+
runs-on: ubuntu-latest
19+
steps:
20+
- name: Comment size deltas reports to PRs
21+
uses: arduino/report-size-deltas@v1
22+
with:
23+
# The name of the workflow artifact created by the sketch compilation workflow
24+
sketches-reports-source: sketches-reports

0 commit comments

Comments
 (0)