name: Check on: push: branches: ['main'] pull_request: branches: ['main'] env: CARGO_TERM_COLOR: always RUSTFLAGS: '-Dwarnings' jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Setup Node.js environment uses: actions/setup-node@v4.2.0 with: node-version: '22.x' check-latest: true - name: Setup rust run: | cargo install wasm-pack cargo-machete - name: Build wasm run: | wasm-pack build --target web --features wasm - name: Lint run: | cargo clippy --all-targets --all-features cargo fmt --all -- --check cargo machete - name: Test run: | cargo test --verbose cargo test --features serde cargo test --features wasm wasm-pack test --node --features wasm publish: needs: build runs-on: ubuntu-latest if: github.ref == 'refs/heads/main' steps: - uses: actions/checkout@v4 - name: Setup Node.js environment uses: actions/setup-node@v4.2.0 with: node-version: '22.x' check-latest: true registry-url: 'https://registry.npmjs.org' - name: Setup rust run: | cargo install wasm-pack - name: Build wasm run: | wasm-pack build --target web --features wasm - name: Publish to crates.io run: cargo publish --token ${{ secrets.CRATES_IO_TOKEN }} - name: Build reconcile-js run: | cd reconcile-js npm ci npm run build - name: Publish reconcile-js to NPM run: | cd reconcile-js npm publish env: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}