Skip to content

Commit ceb8dac

Browse files
authored
feat(ci): Link all versions during release (#1290)
chore(ci): Upgrade release-please & use our uploader action
1 parent 4aeddcc commit ceb8dac

File tree

3 files changed

+63
-53
lines changed

3 files changed

+63
-53
lines changed

.github/workflows/release.yml

Lines changed: 38 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -8,23 +8,20 @@ jobs:
88
name: Create Release
99
runs-on: ubuntu-latest
1010
outputs:
11-
release_created: ${{ steps.release.outputs.release_created }}
12-
upload_url: ${{ steps.release.outputs.upload_url }}
11+
releases_created: ${{ steps.release.outputs.releases_created }}
1312
tag_name: ${{ steps.release.outputs.tag_name }}
14-
stdlib_upload_url: ${{ steps.release.outputs.stdlib--upload_url }}
15-
stdlib_release_created: ${{ steps.release.outputs.stdlib--release_created }}
16-
js-runner_upload_url: ${{ steps.release.outputs.js-runner--upload_url }}
17-
js-runner_release_created: ${{ steps.release.outputs.js-runner--release_created }}
13+
stdlib_tag_name: ${{ steps.release.outputs.stdlib--tag_name }}
14+
js-runner_tag_name: ${{ steps.release.outputs.js-runner--tag_name }}
1815
steps:
19-
- uses: GoogleCloudPlatform/release-please-action@v2.33.1
16+
- uses: GoogleCloudPlatform/release-please-action@v3.2.5
2017
id: release
2118
with:
2219
token: ${{ secrets.GITHUB_TOKEN }}
2320
command: manifest
2421

2522
prepare-artifacts:
2623
needs: [release-please]
27-
if: ${{ needs.release-please.outputs.release_created }}
24+
if: ${{ needs.release-please.outputs.releases_created }}
2825
name: Prepare artifacts
2926
runs-on: ubuntu-latest
3027
outputs:
@@ -81,76 +78,68 @@ jobs:
8178
npm run cli build-pkg -- --target=win-x64,mac-x64,linux-x64
8279
8380
- name: Upload Binary (Windows)
84-
uses: actions/upload-release-asset@v1
85-
env:
86-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
81+
uses: grain-lang/[email protected]
8782
with:
88-
upload_url: ${{ needs.release-please.outputs.upload_url }}
89-
asset_path: ./pkg/grain-win.exe
83+
token: ${{ secrets.GITHUB_TOKEN }}
84+
file: ./pkg/grain-win.exe
9085
asset_name: grain-win-x64.exe
91-
asset_content_type: application/octet-stream
86+
tag: ${{ needs.release-please.outputs.tag_name }}
9287

9388
- name: Upload Binary (Mac)
94-
uses: actions/upload-release-asset@v1
95-
env:
96-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
89+
uses: grain-lang/[email protected]
9790
with:
98-
upload_url: ${{ needs.release-please.outputs.upload_url }}
99-
asset_path: ./pkg/grain-macos
91+
token: ${{ secrets.GITHUB_TOKEN }}
92+
file: ./pkg/grain-macos
10093
asset_name: grain-mac-x64
101-
asset_content_type: application/octet-stream
94+
tag: ${{ needs.release-please.outputs.tag_name }}
10295

10396
- name: Upload Binary (Linux)
104-
uses: actions/upload-release-asset@v1
105-
env:
106-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
97+
uses: grain-lang/[email protected]
10798
with:
108-
upload_url: ${{ needs.release-please.outputs.upload_url }}
109-
asset_path: ./pkg/grain-linux
99+
token: ${{ secrets.GITHUB_TOKEN }}
100+
file: ./pkg/grain-linux
110101
asset_name: grain-linux-x64
111-
asset_content_type: application/octet-stream
102+
tag: ${{ needs.release-please.outputs.tag_name }}
112103

113104
- name: Pack stdlib
114-
if: ${{ needs.release-please.outputs.stdlib_release_created }}
105+
if: ${{ needs.release-please.outputs.releases_created }}
115106
working-directory: ./stdlib
116107
# Runs `npm pack` and assigns the filename to an env var we can use later
108+
# `sed` is used to workaround https://github.com/npm/cli/issues/3405
117109
run: |
118-
echo "STDLIB_TAR=$(npm pack --json | jq -r '.[0].filename')" >> $GITHUB_ENV
110+
echo "STDLIB_TAR=$(npm pack --json | jq -r '.[0].filename' | sed -r 's/@//g' | sed -r 's/\//-/g')" >> $GITHUB_ENV
119111
120112
- name: Upload stdlib
121113
id: stdlib-upload
122-
if: ${{ needs.release-please.outputs.stdlib_release_created }}
123-
uses: actions/upload-release-asset@v1
124-
env:
125-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
114+
if: ${{ needs.release-please.outputs.releases_created }}
115+
uses: grain-lang/[email protected]
126116
with:
127-
upload_url: ${{ needs.release-please.outputs.stdlib_upload_url }}
128-
asset_path: ./stdlib/${{ env.STDLIB_TAR }}
117+
token: ${{ secrets.GITHUB_TOKEN }}
118+
file: ./stdlib/${{ env.STDLIB_TAR }}
129119
asset_name: stdlib.tgz
130-
asset_content_type: application/octet-stream
120+
tag: ${{ needs.release-please.outputs.stdlib_tag_name }}
131121

132122
- name: Pack js-runner
133-
if: ${{ needs.release-please.outputs.js-runner_release_created }}
123+
if: ${{ needs.release-please.outputs.releases_created }}
134124
working-directory: ./js-runner
135125
# Runs `npm pack` and assigns the filename to an env var we can use later
126+
# `sed` is used to workaround https://github.com/npm/cli/issues/3405
136127
run: |
137-
echo "RUNNER_TAR=$(npm pack --json | jq -r '.[0].filename')" >> $GITHUB_ENV
128+
echo "RUNNER_TAR=$(npm pack --json | jq -r '.[0].filename' | sed -r 's/@//g' | sed -r 's/\//-/g')" >> $GITHUB_ENV
138129
139130
- name: Upload js-runner
140131
id: js-runner-upload
141-
if: ${{ needs.release-please.outputs.js-runner_release_created }}
142-
uses: actions/upload-release-asset@v1
143-
env:
144-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
132+
if: ${{ needs.release-please.outputs.releases_created }}
133+
uses: grain-lang/[email protected]
145134
with:
146-
upload_url: ${{ needs.release-please.outputs.js-runner_upload_url }}
147-
asset_path: ./js-runner/${{ env.RUNNER_TAR }}
135+
token: ${{ secrets.GITHUB_TOKEN }}
136+
file: ./js-runner/${{ env.RUNNER_TAR }}
148137
asset_name: js-runner.tgz
149-
asset_content_type: application/octet-stream
138+
tag: ${{ needs.release-please.outputs.js-runner_tag_name }}
150139

151140
dispatch-website:
152141
needs: [release-please, prepare-artifacts]
153-
if: ${{ needs.release-please.outputs.release_created }}
142+
if: ${{ needs.release-please.outputs.releases_created }}
154143
name: Dispatch website release
155144
runs-on: ubuntu-latest
156145
steps:
@@ -164,7 +153,7 @@ jobs:
164153

165154
dispatch-homebrew:
166155
needs: [release-please, prepare-artifacts]
167-
if: ${{ needs.release-please.outputs.release_created }}
156+
if: ${{ needs.release-please.outputs.releases_created }}
168157
name: Dispatch homebrew release
169158
runs-on: ubuntu-latest
170159
steps:
@@ -178,7 +167,7 @@ jobs:
178167

179168
dispatch-docker:
180169
needs: [release-please, prepare-artifacts]
181-
if: ${{ needs.release-please.outputs.release_created }}
170+
if: ${{ needs.release-please.outputs.releases_created }}
182171
name: Dispatch Docker builds
183172
runs-on: ubuntu-latest
184173
steps:
@@ -192,7 +181,7 @@ jobs:
192181

193182
npm-release-stdlib:
194183
needs: [release-please, prepare-artifacts]
195-
if: ${{ needs.release-please.outputs.stdlib_release_created }}
184+
if: ${{ needs.release-please.outputs.releases_created }}
196185
name: Publish stdlib to npm registry
197186
runs-on: ubuntu-latest
198187
steps:
@@ -210,7 +199,7 @@ jobs:
210199

211200
npm-release-js-runner:
212201
needs: [release-please, prepare-artifacts]
213-
if: ${{ needs.release-please.outputs.js-runner_release_created }}
202+
if: ${{ needs.release-please.outputs.releases_created }}
214203
name: Publish js-runner to npm registry
215204
runs-on: ubuntu-latest
216205
steps:

cli/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,8 @@
3737
},
3838
"homepage": "https://github.com/grain-lang/grain#readme",
3939
"dependencies": {
40-
"@grain/js-runner": "^0.4.0",
41-
"@grain/stdlib": "^0.4.6",
40+
"@grain/js-runner": "0.4.0",
41+
"@grain/stdlib": "0.4.6",
4242
"commander": "^8.1.0"
4343
},
4444
"devDependencies": {

release-please-config.json

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,44 @@
22
"bump-minor-pre-major": true,
33
"bump-patch-for-minor-pre-major": true,
44
"plugins": [
5-
"node-workspace"
5+
{
6+
"type": "linked-versions",
7+
"groupName": "Grain",
8+
"components": ["grain", "cli", "compiler", "js-runner", "stdlib"]
9+
}
610
],
711
"packages": {
812
".": {
13+
"component": "grain",
914
"release-type": "node"
1015
},
1116
"cli": {
12-
"release-type": "node"
17+
"component": "cli",
18+
"release-type": "node",
19+
"extra-files": [
20+
{
21+
"type": "json",
22+
"path": "package.json",
23+
"jsonpath": "$.dependencies['@grain/js-runner']"
24+
},
25+
{
26+
"type": "json",
27+
"path": "package.json",
28+
"jsonpath": "$.dependencies['@grain/stdlib']"
29+
}
30+
]
1331
},
1432
"compiler": {
33+
"component": "compiler",
1534
"package-name": "@grain/compiler",
1635
"release-type": "ocaml"
1736
},
1837
"js-runner": {
38+
"component": "js-runner",
1939
"release-type": "node"
2040
},
2141
"stdlib": {
42+
"component": "stdlib",
2243
"release-type": "node"
2344
}
2445
}

0 commit comments

Comments
 (0)