Build and publish wasm #1
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
# Build and publish ruff-api for wasm. | |
# | |
# Assumed to run as a subworkflow of .github/workflows/release.yml; specifically, as a publish | |
# job within `cargo-dist`. | |
name: "Build and publish wasm" | |
on: | |
workflow_dispatch: | |
workflow_call: | |
inputs: | |
plan: | |
required: true | |
type: string | |
env: | |
CARGO_INCREMENTAL: 0 | |
CARGO_NET_RETRY: 10 | |
CARGO_TERM_COLOR: always | |
RUSTUP_MAX_RETRIES: 10 | |
jobs: | |
ruff_wasm: | |
runs-on: ubuntu-latest | |
permissions: | |
contents: read | |
id-token: write | |
strategy: | |
matrix: | |
target: [web, bundler, nodejs] | |
fail-fast: false | |
steps: | |
- uses: actions/checkout@v4 | |
- name: "Install Rust toolchain" | |
run: rustup target add wasm32-unknown-unknown | |
- uses: jetli/wasm-pack-action@v0.4.0 | |
- uses: jetli/wasm-bindgen-action@v0.2.0 | |
- name: "Run wasm-pack build" | |
run: wasm-pack build --target ${{ matrix.target }} crates/ruff_wasm | |
- name: "Rename generated package" | |
run: | # Replace the package name w/ jq | |
jq '.name="@astral-sh/ruff-wasm-${{ matrix.target }}"' crates/ruff_wasm/pkg/package.json > /tmp/package.json | |
mv /tmp/package.json crates/ruff_wasm/pkg | |
- run: cp LICENSE crates/ruff_wasm/pkg # wasm-pack does not put the LICENSE file in the pkg | |
- uses: actions/setup-node@v4 | |
with: | |
node-version: 18 | |
registry-url: "https://registry.npmjs.org" | |
- name: "Publish (dry-run)" | |
if: ${{ inputs.plan == '' || fromJson(inputs.plan).announcement_tag_is_implicit }} | |
run: npm publish --dry-run crates/ruff_wasm/pkg | |
- name: "Publish" | |
if: ${{ inputs.plan != '' && !fromJson(inputs.plan).announcement_tag_is_implicit }} | |
run: npm publish --provenance --access public crates/ruff_wasm/pkg | |
env: | |
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} |