name: CI
on:
push:
branches: ["main"]
pull_request:
branches:
- main
jobs:
format-rust:
name: cargo fmt
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions-rust-lang/setup-rust-toolchain@v1
with:
components: rustfmt
- uses: actions-rust-lang/rustfmt@v1
lint-rust:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions-rust-lang/setup-rust-toolchain@v1
with:
components: clippy
- run: cargo clippy --locked --tests
test-rust:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions-rust-lang/setup-rust-toolchain@v1
with:
components: llvm-tools-preview
- name: Install cargo-llvm-cov
uses: taiki-e/install-action@cargo-llvm-cov
- name: Install nexttest
uses: taiki-e/install-action@nextest
- name: Generate code coverage
env:
RUSTFLAGS: -D warnings
run: |
cargo llvm-cov --locked --no-report nextest --profile ci
cargo llvm-cov report --locked --lcov --output-path lcov.txt
- name: Upload coverage to Codecov
if: github.event.pull_request.user.login != 'dependabot[bot]'
uses: Wandalen/wretry.action@v3
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
with:
action: codecov/codecov-action@v4
attempt_limit: 6
attempt_delay: 10000
with: |
files: ./lcov.txt
flags: unittests
fail_ci_if_error: ${{ github.event_name == 'pull_request' }}
verbose: true
- name: Generate code coverage (wasm)
env:
RUSTFLAGS: -D warnings
run: |
cargo llvm-cov --locked --no-report nextest --profile ci --no-default-features --features wasm
cargo llvm-cov report --locked --lcov --output-path lcov-wasm.txt
- name: Upload coverage to Codecov
if: github.event.pull_request.user.login != 'dependabot[bot]'
uses: Wandalen/wretry.action@v3
env:
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
with:
action: codecov/codecov-action@v4
attempt_limit: 6
attempt_delay: 10000
with: |
files: ./lcov-wasm.txt
flags: wasm
fail_ci_if_error: ${{ github.event_name == 'pull_request' }}
verbose: true
test-typescript:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/setup-node@v6
- run: npm ci
working-directory: packages/mpl-codemirror
- run: npm test
working-directory: packages/mpl-codemirror
build-wasm:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions-rust-lang/setup-rust-toolchain@v1
with:
target: wasm32-unknown-unknown
- run: cargo install --locked wasm-pack
- uses: actions/setup-node@v6
- name: Build wasm
run: wasm-pack build --scope axiomhq --target web --profile wasm-release --no-opt --no-default-features --features wasm
- run: npm install typescript
working-directory: pkg
- name: Check TypeScript types
run: npx tsc --noEmit -t esnext mpl_lang.d.ts
working-directory: pkg
- name: Test wasm build against sample queries
run: node tests/wasm/test-wasm.mjs
build-playground:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions-rust-lang/setup-rust-toolchain@v1
with:
target: wasm32-unknown-unknown
- run: cargo install --locked wasm-pack
- uses: actions/setup-node@v6
- name: Build wasm (playground)
run: wasm-pack build extra/mpl-playground --scope axiomhq --target web --profile wasm-release --no-opt
- run: npm install typescript
working-directory: extra/mpl-playground/pkg
- name: Check TypeScript types (playground)
run: npx tsc --noEmit -t esnext mpl_playground.d.ts
working-directory: extra/mpl-playground/pkg
- name: Test playground build against sample queries
run: node tests/wasm/test-playground.mjs