chore: github pr action, run on all, cancel on update and close #159
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Release Versions or Publish NPM | |
on: | |
push: | |
branches: | |
- main | |
# This is for .npmrc. Nx automatically creates an .npmrc before changesets runs | |
# and creates one itself, so we need to explicitly have one. | |
env: | |
NPM_TOKEN: ${{ secrets.NPM_TOKEN }} | |
concurrency: commits-to-main | |
jobs: | |
release-main: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout all commits | |
uses: actions/checkout@v3 | |
with: | |
fetch-depth: 0 | |
- name: Setup | |
uses: ./.github/actions/setup | |
with: | |
node_version: 20.10.0 | |
- uses: docker/setup-buildx-action@v2 | |
- uses: docker/login-action@v2 | |
with: | |
registry: ghcr.io | |
username: ${{ github.repository_owner }} | |
password: ${{ secrets.GITHUB_TOKEN }} | |
- name: Lint | |
shell: bash | |
run: npx nx run-many --target=lint --all --parallel=5 | |
- name: Test | |
shell: bash | |
run: npx nx run-many --target=test --all --parallel=5 | |
- name: Build for publishing | |
shell: bash | |
run: npx nx run-many --target=build --configuration=production --all --parallel=5 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
NOTION_TOKEN: ${{ secrets.NOTION_TOKEN }} | |
- name: Containers | |
shell: bash | |
run: npx nx run-many --target=container --configuration=production -all --parallel=5 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
NOTION_TOKEN: ${{ secrets.NOTION_TOKEN }} | |
- name: Containers zen | |
shell: bash | |
run: npx nx run-many --target=container --configuration=production-testnet-zen -all --parallel=5 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
NOTION_TOKEN: ${{ secrets.NOTION_TOKEN }} | |
# If there are changesets, then we are in PR prep mode and will | |
# update the release pull request. Note that if there are no changesets | |
# this step will be skipped because no publish script is specified. | |
- name: Update release pull request | |
id: changesets | |
uses: changesets/action@v1 | |
with: | |
commit: 'chore: release packages' | |
version: npm run version | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
- name: Replace src code with dists for publishing | |
if: steps.changesets.outputs.hasChangesets == 'false' | |
run: ./scripts/replace-src-with-dists-for-publishing.sh | |
# If no changesets were detected in the PR prep step then we are in | |
# release/publish mode. Check for and publish any new versions to NPM. | |
- name: Publish to NPM and create GitHub releases | |
id: changesets_release | |
if: steps.changesets.outputs.hasChangesets == 'false' | |
uses: changesets/action@v1 | |
with: | |
publish: npm run release | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
NPM_TOKEN: ${{ secrets.NPM_TOKEN }} | |
- name: Release Go modules | |
# if a release was published, release the Go modules | |
if: steps.changesets_release.outputs.published == 'true' | |
run: | | |
curl \ | |
-X POST \ | |
-H "Authorization: token ${{ secrets.GITHUB_TOKEN }}" \ | |
-H "Accept: application/vnd.github.v3+json" \ | |
https://api.github.com/repos/SiaFoundation/web/actions/workflows/release-go.yml/dispatches \ | |
-d '{"ref":"main"}' | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |