Skip to content

Publish

Publish #97

# This workflow will run tests using node and then publish a package to GitHub Packages when a release is created
# For more information see: https://docs.github.com/en/actions/publishing-packages/publishing-nodejs-packages
name: Publish
on:
release:
types:
- created
jobs:
build-test:
name: Build and test (${{ matrix.os }})
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
runs-on: ${{ matrix.os }}
env:
MAESTRO_API_KEY: ${{ secrets.MAESTRO_API_KEY }}
steps:
- uses: actions/checkout@v3
- uses: swatinem/rust-cache@v2
- name: Build whisky-common
run: >
cd packages/whisky-common &&
cargo build
--locked
--verbose
- uses: actions/checkout@v3
- uses: swatinem/rust-cache@v2
- name: Build whisky-csl
run: >
cd packages/whisky-csl &&
cargo build
--locked
--verbose
- uses: actions/checkout@v3
- uses: swatinem/rust-cache@v2
- name: Build whisky-js
run: >
cd packages/whisky-js &&
cargo build
--locked
--verbose
- uses: actions/checkout@v3
- uses: swatinem/rust-cache@v2
- name: Build whisky
run: >
cd packages/whisky &&
cargo build
--locked
--verbose
- name: Create .env file
run: echo "MAESTRO_API_KEY=${MAESTRO_API_KEY}" > packages/whisky/.env
- name: Run all tests (without coverage)
if: matrix.os != 'ubuntu-latest'
run: >
cd packages &&
cargo test
--verbose
publish-npm:
needs: [build-test]
name: Publish NPM wasm package
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
registry-url: https://registry.npmjs.org/
- name: Install dependencies
run: npm install && cargo install wasm-pack
- run: npm run js:publish-nodejs && npm run js:publish-browser
env:
NODE_AUTH_TOKEN: ${{secrets.npm_token}}
publish-common-crate:
needs: [build-test]
name: Publish whisky-common crate
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Install stable toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
- run: cd packages/whisky-common && cargo publish --token ${PUBLISH_KEY}
env:
PUBLISH_KEY: ${{ secrets.PUBLISH_KEY }}
publish-csl-crate:
needs: [build-test, publish-common-crate]
name: Publish whisky-csl crate
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Install stable toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
- run: cd packages/whisky-csl && cargo publish --token ${PUBLISH_KEY}
env:
PUBLISH_KEY: ${{ secrets.PUBLISH_KEY }}
publish-whisky-crate:
needs: [build-test, publish-common-crate, publish-csl-crate]
name: Publish whisky crate
runs-on: ubuntu-latest
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Install stable toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
override: true
- run: cd packages/whisky && cargo publish --token ${PUBLISH_KEY}
env:
PUBLISH_KEY: ${{ secrets.PUBLISH_KEY }}