Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(ci): Link all versions during release #1290

Merged
merged 2 commits into from
May 31, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
87 changes: 38 additions & 49 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,23 +8,20 @@ jobs:
name: Create Release
runs-on: ubuntu-latest
outputs:
release_created: ${{ steps.release.outputs.release_created }}
upload_url: ${{ steps.release.outputs.upload_url }}
releases_created: ${{ steps.release.outputs.releases_created }}
tag_name: ${{ steps.release.outputs.tag_name }}
stdlib_upload_url: ${{ steps.release.outputs.stdlib--upload_url }}
stdlib_release_created: ${{ steps.release.outputs.stdlib--release_created }}
js-runner_upload_url: ${{ steps.release.outputs.js-runner--upload_url }}
js-runner_release_created: ${{ steps.release.outputs.js-runner--release_created }}
stdlib_tag_name: ${{ steps.release.outputs.stdlib--tag_name }}
js-runner_tag_name: ${{ steps.release.outputs.js-runner--tag_name }}
steps:
- uses: GoogleCloudPlatform/release-please-action@v2.33.1
- uses: GoogleCloudPlatform/release-please-action@v3.2.5
id: release
with:
token: ${{ secrets.GITHUB_TOKEN }}
command: manifest

prepare-artifacts:
needs: [release-please]
if: ${{ needs.release-please.outputs.release_created }}
if: ${{ needs.release-please.outputs.releases_created }}
name: Prepare artifacts
runs-on: ubuntu-latest
outputs:
Expand Down Expand Up @@ -81,76 +78,68 @@ jobs:
npm run cli build-pkg -- --target=win-x64,mac-x64,linux-x64

- name: Upload Binary (Windows)
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
uses: grain-lang/upload-release-action@v3.0.1
with:
upload_url: ${{ needs.release-please.outputs.upload_url }}
asset_path: ./pkg/grain-win.exe
token: ${{ secrets.GITHUB_TOKEN }}
file: ./pkg/grain-win.exe
asset_name: grain-win-x64.exe
asset_content_type: application/octet-stream
tag: ${{ needs.release-please.outputs.tag_name }}

- name: Upload Binary (Mac)
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
uses: grain-lang/upload-release-action@v3.0.1
with:
upload_url: ${{ needs.release-please.outputs.upload_url }}
asset_path: ./pkg/grain-macos
token: ${{ secrets.GITHUB_TOKEN }}
file: ./pkg/grain-macos
asset_name: grain-mac-x64
asset_content_type: application/octet-stream
tag: ${{ needs.release-please.outputs.tag_name }}

- name: Upload Binary (Linux)
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
uses: grain-lang/upload-release-action@v3.0.1
with:
upload_url: ${{ needs.release-please.outputs.upload_url }}
asset_path: ./pkg/grain-linux
token: ${{ secrets.GITHUB_TOKEN }}
file: ./pkg/grain-linux
asset_name: grain-linux-x64
asset_content_type: application/octet-stream
tag: ${{ needs.release-please.outputs.tag_name }}

- name: Pack stdlib
if: ${{ needs.release-please.outputs.stdlib_release_created }}
if: ${{ needs.release-please.outputs.releases_created }}
working-directory: ./stdlib
# Runs `npm pack` and assigns the filename to an env var we can use later
# `sed` is used to workaround https://github.com/npm/cli/issues/3405
run: |
echo "STDLIB_TAR=$(npm pack --json | jq -r '.[0].filename')" >> $GITHUB_ENV
echo "STDLIB_TAR=$(npm pack --json | jq -r '.[0].filename' | sed -r 's/@//g' | sed -r 's/\//-/g')" >> $GITHUB_ENV

- name: Upload stdlib
id: stdlib-upload
if: ${{ needs.release-please.outputs.stdlib_release_created }}
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
if: ${{ needs.release-please.outputs.releases_created }}
uses: grain-lang/upload-release-action@v3.0.1
with:
upload_url: ${{ needs.release-please.outputs.stdlib_upload_url }}
asset_path: ./stdlib/${{ env.STDLIB_TAR }}
token: ${{ secrets.GITHUB_TOKEN }}
file: ./stdlib/${{ env.STDLIB_TAR }}
asset_name: stdlib.tgz
asset_content_type: application/octet-stream
tag: ${{ needs.release-please.outputs.stdlib_tag_name }}

- name: Pack js-runner
if: ${{ needs.release-please.outputs.js-runner_release_created }}
if: ${{ needs.release-please.outputs.releases_created }}
working-directory: ./js-runner
# Runs `npm pack` and assigns the filename to an env var we can use later
# `sed` is used to workaround https://github.com/npm/cli/issues/3405
run: |
echo "RUNNER_TAR=$(npm pack --json | jq -r '.[0].filename')" >> $GITHUB_ENV
echo "RUNNER_TAR=$(npm pack --json | jq -r '.[0].filename' | sed -r 's/@//g' | sed -r 's/\//-/g')" >> $GITHUB_ENV

- name: Upload js-runner
id: js-runner-upload
if: ${{ needs.release-please.outputs.js-runner_release_created }}
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
if: ${{ needs.release-please.outputs.releases_created }}
uses: grain-lang/upload-release-action@v3.0.1
with:
upload_url: ${{ needs.release-please.outputs.js-runner_upload_url }}
asset_path: ./js-runner/${{ env.RUNNER_TAR }}
token: ${{ secrets.GITHUB_TOKEN }}
file: ./js-runner/${{ env.RUNNER_TAR }}
asset_name: js-runner.tgz
asset_content_type: application/octet-stream
tag: ${{ needs.release-please.outputs.js-runner_tag_name }}

dispatch-website:
needs: [release-please, prepare-artifacts]
if: ${{ needs.release-please.outputs.release_created }}
if: ${{ needs.release-please.outputs.releases_created }}
name: Dispatch website release
runs-on: ubuntu-latest
steps:
Expand All @@ -164,7 +153,7 @@ jobs:

dispatch-homebrew:
needs: [release-please, prepare-artifacts]
if: ${{ needs.release-please.outputs.release_created }}
if: ${{ needs.release-please.outputs.releases_created }}
name: Dispatch homebrew release
runs-on: ubuntu-latest
steps:
Expand All @@ -178,7 +167,7 @@ jobs:

dispatch-docker:
needs: [release-please, prepare-artifacts]
if: ${{ needs.release-please.outputs.release_created }}
if: ${{ needs.release-please.outputs.releases_created }}
name: Dispatch Docker builds
runs-on: ubuntu-latest
steps:
Expand All @@ -192,7 +181,7 @@ jobs:

npm-release-stdlib:
needs: [release-please, prepare-artifacts]
if: ${{ needs.release-please.outputs.stdlib_release_created }}
if: ${{ needs.release-please.outputs.releases_created }}
name: Publish stdlib to npm registry
runs-on: ubuntu-latest
steps:
Expand All @@ -210,7 +199,7 @@ jobs:

npm-release-js-runner:
needs: [release-please, prepare-artifacts]
if: ${{ needs.release-please.outputs.js-runner_release_created }}
if: ${{ needs.release-please.outputs.releases_created }}
name: Publish js-runner to npm registry
runs-on: ubuntu-latest
steps:
Expand Down
4 changes: 2 additions & 2 deletions cli/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -37,8 +37,8 @@
},
"homepage": "https://github.com/grain-lang/grain#readme",
"dependencies": {
"@grain/js-runner": "^0.4.0",
"@grain/stdlib": "^0.4.6",
"@grain/js-runner": "0.4.0",
"@grain/stdlib": "0.4.6",
"commander": "^8.1.0"
},
"devDependencies": {
Expand Down
25 changes: 23 additions & 2 deletions release-please-config.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,23 +2,44 @@
"bump-minor-pre-major": true,
"bump-patch-for-minor-pre-major": true,
"plugins": [
"node-workspace"
{
"type": "linked-versions",
"groupName": "Grain",
"components": ["grain", "cli", "compiler", "js-runner", "stdlib"]
}
],
"packages": {
".": {
"component": "grain",
"release-type": "node"
},
"cli": {
"release-type": "node"
"component": "cli",
"release-type": "node",
"extra-files": [
{
"type": "json",
"path": "package.json",
"jsonpath": "$.dependencies['@grain/js-runner']"
},
{
"type": "json",
"path": "package.json",
"jsonpath": "$.dependencies['@grain/stdlib']"
}
]
},
"compiler": {
"component": "compiler",
"package-name": "@grain/compiler",
"release-type": "ocaml"
},
"js-runner": {
"component": "js-runner",
"release-type": "node"
},
"stdlib": {
"component": "stdlib",
"release-type": "node"
}
}
Expand Down