Skip to content

Commit e70898d

Browse files
committed
Merge branch 'master' of https://github.com/rollup/rollup into sync-469d574e
2 parents 2c6c564 + 469d574 commit e70898d

2 files changed

Lines changed: 187 additions & 95 deletions

File tree

Lines changed: 174 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,174 @@
1+
name: Upload REPL artefacts
2+
3+
on:
4+
workflow_run:
5+
workflows:
6+
- Build REPL artefacts
7+
types:
8+
- completed
9+
10+
permissions:
11+
contents: read
12+
13+
jobs:
14+
upload:
15+
permissions:
16+
pull-requests: write # for removing the label and peter-evans/find-comment and peter-evans/create-or-update-comment
17+
actions: read # for downloading workflow run artifacts
18+
id-token: write # for AWS OIDC authentication
19+
if: ${{ github.event.workflow_run.conclusion == 'success' }}
20+
runs-on: ubuntu-latest
21+
name: Upload
22+
steps:
23+
- name: Check whether artefacts were produced
24+
id: check
25+
env:
26+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
27+
run: |
28+
# The build job is skipped for untriggered fork PRs, leaving zero artifacts.
29+
# In that case the workflow_run still completes with 'success', so we guard here.
30+
ARTIFACT_COUNT=$(gh api /repos/${{ github.repository }}/actions/runs/${{ github.event.workflow_run.id }}/artifacts \
31+
--jq '.total_count')
32+
if [[ "$ARTIFACT_COUNT" != "0" ]]; then
33+
echo "has-artefacts=true" >> "$GITHUB_OUTPUT"
34+
else
35+
echo "has-artefacts=false" >> "$GITHUB_OUTPUT"
36+
fi
37+
- name: Download artefacts
38+
if: ${{ steps.check.outputs.has-artefacts == 'true' }}
39+
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
40+
with:
41+
run-id: ${{ github.event.workflow_run.id }}
42+
github-token: ${{ secrets.GITHUB_TOKEN }}
43+
pattern: repl-artefacts
44+
path: repl-artefacts
45+
- name: Resolve PR number and label from trusted API
46+
id: pr-number
47+
if: ${{ steps.check.outputs.has-artefacts == 'true' }}
48+
env:
49+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
50+
run: |
51+
HEAD_SHA="${{ github.event.workflow_run.head_sha }}"
52+
HEAD_REPO="${{ github.event.workflow_run.head_repository.full_name }}"
53+
54+
# For same-repo PRs the number is available directly in the workflow_run event.
55+
# For fork PRs we look it up via the API using the head SHA and head repository.
56+
PR_NUMBER="${{ github.event.workflow_run.pull_requests[0].number }}"
57+
if [[ -z "$PR_NUMBER" ]]; then
58+
PR_NUMBER=$(gh api "/repos/${{ github.repository }}/pulls" \
59+
--jq ".[] | select(.head.sha == \"$HEAD_SHA\" and .head.repo.full_name == \"$HEAD_REPO\") | .number" \
60+
-f state=open)
61+
fi
62+
63+
if [[ -z "$PR_NUMBER" || ! "$PR_NUMBER" =~ ^[0-9]+$ ]]; then
64+
echo "Could not resolve a valid PR number" >&2
65+
exit 1
66+
fi
67+
echo "pr-number=$PR_NUMBER" >> "$GITHUB_OUTPUT"
68+
69+
# Check via API whether the label is currently present on the PR
70+
LABEL=$(gh api "/repos/${{ github.repository }}/issues/$PR_NUMBER/labels" \
71+
--jq '.[] | select(.name == "x⁸ ⚙️ build repl artefacts") | .name')
72+
if [[ -n "$LABEL" ]]; then
73+
echo "labeled=true" >> "$GITHUB_OUTPUT"
74+
else
75+
echo "labeled=false" >> "$GITHUB_OUTPUT"
76+
fi
77+
- name: Remove 'x⁸ ⚙️ build repl artefacts' label
78+
if: ${{ steps.pr-number.outputs.labeled == 'true' }}
79+
run: gh pr edit ${{ steps.pr-number.outputs.pr-number }} --repo ${{ github.repository }} --remove-label 'x⁸ ⚙️ build repl artefacts'
80+
env:
81+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
82+
- name: Configure AWS credentials via OIDC
83+
if: ${{ steps.check.outputs.has-artefacts == 'true' }}
84+
uses: aws-actions/configure-aws-credentials@e3dd6a429d7300a6a4c196c26e071d42e0343502 # v4.0.2
85+
with:
86+
role-to-assume: ${{ secrets.AWS_ROLE_ARN }}
87+
aws-region: ${{ secrets.AWS_REGION }}
88+
- name: Upload "${{ steps.pr-number.outputs.pr-number }}/rollup.browser.js" to bucket
89+
if: ${{ steps.check.outputs.has-artefacts == 'true' }}
90+
uses: zdurham/s3-upload-github-action@161dfa6991b9d88a97f02f4aeb5dcd26ea7e03cd # master
91+
with:
92+
args: --cache-control max-age=300,public
93+
env:
94+
FILE: repl-artefacts/rollup.browser.js
95+
AWS_REGION: ${{ secrets.AWS_REGION }}
96+
S3_BUCKET: ${{ secrets.AWS_S3_BUCKET }}
97+
S3_KEY: ${{ steps.pr-number.outputs.pr-number }}/rollup.browser.js
98+
- name: Upload "${{ steps.pr-number.outputs.pr-number }}/rollup.browser.js.map" to bucket
99+
if: ${{ steps.check.outputs.has-artefacts == 'true' }}
100+
uses: zdurham/s3-upload-github-action@161dfa6991b9d88a97f02f4aeb5dcd26ea7e03cd # master
101+
with:
102+
args: --cache-control max-age=300,public
103+
env:
104+
FILE: repl-artefacts/rollup.browser.js.map
105+
AWS_REGION: ${{ secrets.AWS_REGION }}
106+
S3_BUCKET: ${{ secrets.AWS_S3_BUCKET }}
107+
S3_KEY: ${{ steps.pr-number.outputs.pr-number }}/rollup.browser.js.map
108+
- name: Upload "${{ steps.pr-number.outputs.pr-number }}/bindings_wasm_bg.wasm" to bucket
109+
if: ${{ steps.check.outputs.has-artefacts == 'true' }}
110+
uses: zdurham/s3-upload-github-action@161dfa6991b9d88a97f02f4aeb5dcd26ea7e03cd # master
111+
with:
112+
args: --cache-control max-age=300,public
113+
env:
114+
FILE: repl-artefacts/bindings_wasm_bg.wasm
115+
AWS_REGION: ${{ secrets.AWS_REGION }}
116+
S3_BUCKET: ${{ secrets.AWS_S3_BUCKET }}
117+
S3_KEY: ${{ steps.pr-number.outputs.pr-number }}/bindings_wasm_bg.wasm
118+
- name: Find Comment
119+
if: ${{ steps.check.outputs.has-artefacts == 'true' }}
120+
uses: peter-evans/find-comment@b30e6a3c0ed37e7c023ccd3f1db5c6c0b0c23aad # v4.0.0
121+
id: findComment
122+
with:
123+
issue-number: ${{ steps.pr-number.outputs.pr-number }}
124+
comment-author: 'github-actions[bot]'
125+
body-includes: 'Thank you for your contribution!'
126+
- name: Create or update comment
127+
if: ${{ steps.check.outputs.has-artefacts == 'true' }}
128+
uses: peter-evans/create-or-update-comment@e8674b075228eee787fea43ef493e45ece1004c9 # v5.0.0
129+
id: createInitialComment
130+
with:
131+
comment-id: ${{ steps.findComment.outputs.comment-id }}
132+
issue-number: ${{ steps.pr-number.outputs.pr-number }}
133+
edit-mode: replace
134+
body: |
135+
### Thank you for your contribution! ❤️
136+
137+
You can try out this pull request locally by installing Rollup via
138+
139+
```bash
140+
npm install ${{ github.event.workflow_run.head_repository.full_name }}#${{ github.event.workflow_run.head_branch }}
141+
```
142+
143+
Notice: Ensure you have installed the latest nightly Rust toolchain. If you haven't installed it yet, please see https://www.rust-lang.org/tools/install to learn how to download Rustup and install Rust.
144+
145+
or load it into the REPL:
146+
https://rollupjs.org/repl/?pr=${{ steps.pr-number.outputs.pr-number }}
147+
- name: Find Vercel preview URL
148+
if: ${{ steps.check.outputs.has-artefacts == 'true' }}
149+
uses: patrickedqvist/wait-for-vercel-preview@d7982701e6fcd3ae073bff929e408e004404d38d # v1.3.3
150+
id: waitForVercel
151+
env:
152+
GITHUB_SHA: ${{ github.event.workflow_run.head_sha }}
153+
with:
154+
token: ${{ secrets.GITHUB_TOKEN }}
155+
- name: Update comment with Vercel preview URL
156+
uses: peter-evans/create-or-update-comment@e8674b075228eee787fea43ef493e45ece1004c9 # v5.0.0
157+
if: ${{ steps.check.outputs.has-artefacts == 'true' && steps.waitForVercel.outputs.url }}
158+
with:
159+
comment-id: ${{ steps.createInitialComment.outputs.comment-id }}
160+
issue-number: ${{ steps.pr-number.outputs.pr-number }}
161+
edit-mode: replace
162+
body: |
163+
### Thank you for your contribution! ❤️
164+
165+
You can try out this pull request locally by installing Rollup via
166+
167+
```bash
168+
npm install ${{ github.event.workflow_run.head_repository.full_name }}#${{ github.event.workflow_run.head_branch }}
169+
```
170+
171+
Notice: Ensure you have installed the latest nightly Rust toolchain. If you haven't installed it yet, please see https://www.rust-lang.org/tools/install to learn how to download Rustup and install Rust.
172+
173+
or load it into the REPL:
174+
${{ steps.waitForVercel.outputs.url }}/repl/?pr=${{ steps.pr-number.outputs.pr-number }}
Lines changed: 13 additions & 95 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
name: Upload REPL artefacts
1+
name: Build REPL artefacts
22

33
on:
4-
pull_request_target:
4+
pull_request:
55
types:
66
- synchronize
77
- opened
@@ -16,24 +16,17 @@ permissions:
1616
contents: read
1717

1818
jobs:
19-
upload:
20-
permissions:
21-
pull-requests: write # for peter-evans/find-comment and peter-evans/create-or-update-comment
19+
build:
2220
if: >-
2321
${{ github.event.pull_request.head.repo.full_name == 'rollup/rollup' ||
2422
(github.event.action == 'labeled' && github.event.label.name == 'x⁸ ⚙️ build repl artefacts') }}
2523
runs-on: ubuntu-latest
26-
name: Upload
24+
name: Build
2725
steps:
2826
- name: Checkout Commit
2927
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
3028
with:
3129
ref: ${{ github.event.pull_request.head.sha }}
32-
- name: Remove 'x⁸ ⚙️ build repl artefacts' label
33-
if: ${{ github.event.action == 'labeled' }}
34-
run: gh pr edit ${{ github.event.pull_request.number }} --remove-label 'x⁸ ⚙️ build repl artefacts'
35-
env:
36-
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
3730
- name: Install Toolchain
3831
uses: dtolnay/rust-toolchain@29eef336d9b2848a0b548edc03f92a220660cdb8 # stable
3932
with:
@@ -60,88 +53,13 @@ jobs:
6053
run: >-
6154
npm exec -- concurrently -c green,blue,yellow 'npm:build:napi -- --release' 'npm run build:wasm' 'npm:build:cjs' &&
6255
npm run build:copy-native && npm run build:bootstrap
63-
- name: Upload "${{ github.event.number }}/rollup.browser.js" to bucket
64-
uses: zdurham/s3-upload-github-action@161dfa6991b9d88a97f02f4aeb5dcd26ea7e03cd # master
56+
- name: Upload artefacts
57+
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
6558
with:
66-
args: --cache-control max-age=300,public
67-
env:
68-
FILE: browser/dist/rollup.browser.js
69-
AWS_REGION: ${{ secrets.AWS_REGION }}
70-
S3_BUCKET: ${{ secrets.AWS_S3_BUCKET }}
71-
S3_KEY: ${{ github.event.number }}/rollup.browser.js
72-
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
73-
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
74-
- name: Upload "${{ github.event.number }}/rollup.browser.js.map" to bucket
75-
uses: zdurham/s3-upload-github-action@161dfa6991b9d88a97f02f4aeb5dcd26ea7e03cd # master
76-
with:
77-
args: --cache-control max-age=300,public
78-
env:
79-
FILE: browser/dist/rollup.browser.js.map
80-
AWS_REGION: ${{ secrets.AWS_REGION }}
81-
S3_BUCKET: ${{ secrets.AWS_S3_BUCKET }}
82-
S3_KEY: ${{ github.event.number }}/rollup.browser.js.map
83-
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
84-
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
85-
- name: Upload "${{ github.event.number }}/bindings_wasm_bg.wasm" to bucket
86-
uses: zdurham/s3-upload-github-action@161dfa6991b9d88a97f02f4aeb5dcd26ea7e03cd # master
87-
with:
88-
args: --cache-control max-age=300,public
89-
env:
90-
FILE: browser/dist/bindings_wasm_bg.wasm
91-
AWS_REGION: ${{ secrets.AWS_REGION }}
92-
S3_BUCKET: ${{ secrets.AWS_S3_BUCKET }}
93-
S3_KEY: ${{ github.event.number }}/bindings_wasm_bg.wasm
94-
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
95-
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
96-
- name: Find Comment
97-
uses: peter-evans/find-comment@b30e6a3c0ed37e7c023ccd3f1db5c6c0b0c23aad # v4.0.0
98-
id: findComment
99-
with:
100-
issue-number: ${{ github.event.number }}
101-
comment-author: 'github-actions[bot]'
102-
body-includes: 'Thank you for your contribution!'
103-
- name: Create or update comment
104-
uses: peter-evans/create-or-update-comment@e8674b075228eee787fea43ef493e45ece1004c9 # v5.0.0
105-
id: createInitialComment
106-
with:
107-
comment-id: ${{ steps.findComment.outputs.comment-id }}
108-
issue-number: ${{ github.event.number }}
109-
edit-mode: replace
110-
body: |
111-
### Thank you for your contribution! ❤️
112-
113-
You can try out this pull request locally by installing Rollup via
114-
115-
```bash
116-
npm install ${{ github.event.pull_request.head.repo.full_name }}#${{ github.event.pull_request.head.ref }}
117-
```
118-
119-
Notice: Ensure you have installed the latest nightly Rust toolchain. If you haven't installed it yet, please see https://www.rust-lang.org/tools/install to learn how to download Rustup and install Rust.
120-
121-
or load it into the REPL:
122-
https://rollupjs.org/repl/?pr=${{ github.event.number }}
123-
- name: Find Vercel preview URL
124-
uses: patrickedqvist/wait-for-vercel-preview@d7982701e6fcd3ae073bff929e408e004404d38d # v1.3.3
125-
id: waitForVercel
126-
with:
127-
token: ${{ secrets.GITHUB_TOKEN }}
128-
- name: Update comment with Vercel preview URL
129-
uses: peter-evans/create-or-update-comment@e8674b075228eee787fea43ef493e45ece1004c9 # v5.0.0
130-
if: ${{ steps.waitForVercel.outputs.url }}
131-
with:
132-
comment-id: ${{ steps.createInitialComment.outputs.comment-id }}
133-
issue-number: ${{ github.event.number }}
134-
edit-mode: replace
135-
body: |
136-
### Thank you for your contribution! ❤️
137-
138-
You can try out this pull request locally by installing Rollup via
139-
140-
```bash
141-
npm install ${{ github.event.pull_request.head.repo.full_name }}#${{ github.event.pull_request.head.ref }}
142-
```
143-
144-
Notice: Ensure you have installed the latest nightly Rust toolchain. If you haven't installed it yet, please see https://www.rust-lang.org/tools/install to learn how to download Rustup and install Rust.
145-
146-
or load it into the REPL:
147-
${{ steps.waitForVercel.outputs.url }}/repl/?pr=${{ github.event.number }}
59+
name: repl-artefacts
60+
path: |
61+
browser/dist/rollup.browser.js
62+
browser/dist/rollup.browser.js.map
63+
browser/dist/bindings_wasm_bg.wasm
64+
if-no-files-found: error
65+
retention-days: 1

0 commit comments

Comments
 (0)