Skip to content

Commit 2fbc9f4

Browse files
authored
[test] separate size report workflow (openthread#13057)
This commit breaks the size report workflow into two workflows so that we can use `pull-request` to collect the data.
1 parent 0db06eb commit 2fbc9f4

2 files changed

Lines changed: 84 additions & 47 deletions

File tree

.github/workflows/size-check.yml

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
#
2+
# Copyright (c) 2026, The OpenThread Authors.
3+
# All rights reserved.
4+
#
5+
# Redistribution and use in source and binary forms, with or without
6+
# modification, are permitted provided that the following conditions are met:
7+
# 1. Redistributions of source code must retain the above copyright
8+
# notice, this list of conditions and the following disclaimer.
9+
# 2. Redistributions in binary form must reproduce the above copyright
10+
# notice, this list of conditions and the following disclaimer in the
11+
# documentation and/or other materials provided with the distribution.
12+
# 3. Neither the name of the copyright holder nor the
13+
# names of its contributors may be used to endorse or promote products
14+
# derived from this software without specific prior written permission.
15+
#
16+
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17+
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18+
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19+
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
20+
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21+
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22+
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23+
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
24+
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25+
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26+
# POSSIBILITY OF SUCH DAMAGE.
27+
#
28+
29+
name: Size Check
30+
31+
on:
32+
push:
33+
branches:
34+
- 'main'
35+
pull_request:
36+
branches:
37+
- 'main'
38+
39+
permissions:
40+
contents: read
41+
42+
concurrency:
43+
group: ${{ github.workflow }}-${{ github.event.pull_request.number || (github.repository == 'openthread/openthread' && github.run_id) || github.ref }}
44+
cancel-in-progress: true
45+
46+
jobs:
47+
48+
size-check:
49+
runs-on: ubuntu-24.04
50+
steps:
51+
- name: Harden Runner
52+
uses: step-security/harden-runner@5ef0c079ce82195b2a36a210272d6b661572d83e # v2.14.2
53+
with:
54+
egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs
55+
56+
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
57+
- name: Run
58+
env:
59+
PR_BODY: "${{ github.event.pull_request.body }}"
60+
PR_NUMBER: "${{ github.event.pull_request.number }}"
61+
run: |
62+
./script/check-size
63+
cat /tmp/ot-size-report/report_pr >> $GITHUB_STEP_SUMMARY
64+
echo "${{ github.event.pull_request.number }}" > /tmp/ot-size-report/pr_number
65+
- name: Upload report
66+
if: ${{ github.event_name == 'pull_request' }}
67+
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
68+
with:
69+
name: report_pr
70+
path: /tmp/ot-size-report
Lines changed: 14 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#
2-
# Copyright (c) 2020, The OpenThread Authors.
2+
# Copyright (c) 2026, The OpenThread Authors.
33
# All rights reserved.
44
#
55
# Redistribution and use in source and binary forms, with or without
@@ -26,66 +26,31 @@
2626
# POSSIBILITY OF SUCH DAMAGE.
2727
#
2828

29-
name: Size
29+
name: Size Report
3030

3131
on:
32-
push:
33-
branches-ignore:
34-
- 'dependabot/**'
35-
pull_request_target:
36-
branches:
37-
- 'main'
32+
workflow_run:
33+
workflows: ["Size Check"]
34+
types:
35+
- completed
3836

3937
permissions:
4038
contents: read
41-
42-
concurrency:
43-
group: ${{ github.workflow }}-${{ github.event.pull_request.number || (github.repository == 'openthread/openthread' && github.run_id) || github.ref }}
44-
cancel-in-progress: true
39+
pull-requests: write
4540

4641
jobs:
4742

48-
size-check:
49-
runs-on: ubuntu-24.04
50-
steps:
51-
- name: Harden Runner
52-
uses: step-security/harden-runner@5ef0c079ce82195b2a36a210272d6b661572d83e # v2.14.2
53-
with:
54-
egress-policy: audit # TODO: change to 'egress-policy: block' after couple of runs
55-
56-
- uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
57-
- name: Fetch Pull Request ref
58-
if: ${{ github.event_name == 'pull_request_target' }}
59-
run: |
60-
git fetch --depth 2 origin pull/${{ github.event.pull_request.number }}/merge
61-
echo "OT_SHA_NEW=$(git rev-parse FETCH_HEAD)" >> $GITHUB_ENV
62-
- name: Run
63-
env:
64-
PR_BODY: "${{ github.event.pull_request.body }}"
65-
PR_NUMBER: "${{ github.event.pull_request.number }}"
66-
run: |
67-
./script/check-size
68-
cat /tmp/ot-size-report/report_pr >> $GITHUB_STEP_SUMMARY
69-
- name: Upload report
70-
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
71-
with:
72-
name: report_pr
73-
path: /tmp/ot-size-report/report_pr
74-
75-
7643
size-report:
77-
needs:
78-
- size-check
79-
permissions:
80-
pull-requests: write
81-
if: github.event_name == 'pull_request_target'
44+
if: github.event.workflow_run.event == 'pull_request' && github.event.workflow_run.conclusion == 'success'
8245
runs-on: ubuntu-24.04
8346
steps:
8447
- name: Download report
8548
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
8649
with:
8750
name: report_pr
8851
path: /tmp/ot-size-report
52+
run-id: ${{ github.event.workflow_run.id }}
53+
github-token: ${{ secrets.GITHUB_TOKEN }}
8954

9055
- name: Post Report
9156
uses: actions/github-script@ed597411d8f924073f98dfc5c65a23a2325f34cd
@@ -95,15 +60,17 @@ jobs:
9560
const fs = require('fs')
9661
9762
const report = fs.readFileSync('/tmp/ot-size-report/report_pr', 'utf8');
63+
const pr_number = parseInt(fs.readFileSync('/tmp/ot-size-report/pr_number', 'utf8').trim());
64+
9865
const params = {
99-
issue_number: context.issue.number,
66+
issue_number: pr_number,
10067
owner: context.repo.owner,
10168
repo: context.repo.repo,
10269
body: report,
10370
}
10471
10572
const response = await github.rest.issues.listComments({
106-
issue_number: context.issue.number,
73+
issue_number: pr_number,
10774
owner: context.repo.owner,
10875
repo: context.repo.repo,
10976
});

0 commit comments

Comments
 (0)