Skip to content

Overhaul CI with Makefile #179

Overhaul CI with Makefile

Overhaul CI with Makefile #179

Workflow file for this run

name: Main
on:
push:
branches: [main]
pull_request:
jobs:
format_and_lint_client_js:
name: Format & Lint Client JS
runs-on: ubuntu-latest
steps:
- name: Git Checkout
uses: actions/checkout@v4
- name: Setup Environment
uses: ./.github/actions/setup
with:
pnpm: true
- name: Format Client JS
run: cargo make js-format
- name: Lint Client JS
run: cargo make js-lint
format_and_lint_client_rust:
name: Format & Lint Client Rust
runs-on: ubuntu-latest
steps:
- name: Git Checkout
uses: actions/checkout@v4
- name: Setup Environment
uses: ./.github/actions/setup
with:
toolchain: format, lint
- name: Format
run: cargo make rust-format
- name: Lint / Clippy
run: cargo make rust-lint-clippy
- name: Lint / Docs
run: cargo make rust-lint-docs
- name: Lint / Features
run: cargo make rust-lint-features
format_and_lint_interface:
name: Format & Lint Interface
runs-on: ubuntu-latest
steps:
- name: Git Checkout
uses: actions/checkout@v4
- name: Setup Environment
uses: ./.github/actions/setup
with:
toolchain: format, lint
- name: Format
run: cargo make interface-format
- name: Lint / Clippy
run: cargo make interface-lint-clippy
- name: Lint / Docs
run: cargo make interface-lint-docs
- name: Lint / Features
run: cargo make interface-lint-features
wasm_interface:
name: Build Interface in WASM
runs-on: ubuntu-latest
needs: format_and_lint_interface
steps:
- name: Git Checkout
uses: actions/checkout@v4
- name: Setup Environment
uses: ./.github/actions/setup
with:
cargo-cache-key: cargo-wasm-interface
solana: true
- name: Install wasm-pack
uses: taiki-e/install-action@v2
with:
tool: wasm-pack
- name: Build Interface with wasm-pack
run: cargo make interface-build-wasm
test_interface:
name: Test Interface
runs-on: ubuntu-latest
needs: format_and_lint_interface
steps:
- name: Git Checkout
uses: actions/checkout@v4
- name: Setup Environment
uses: ./.github/actions/setup
with:
toolchain: test
cargo-cache-key: cargo-interface
solana: true
- name: Test Interface
run: cargo make interface-test
generate_clients:
name: Check Client Generation
runs-on: ubuntu-latest
steps:
- name: Git Checkout
uses: actions/checkout@v4
- name: Setup Environment
uses: ./.github/actions/setup
with:
pnpm: true
toolchain: format
- name: Generate Clients
run: pnpm generate:clients
- name: Check Working Directory
run: |
git status --porcelain
test -z "$(git status --porcelain)"
test_client_js:
name: Test Client JS
runs-on: ubuntu-latest
needs: [format_and_lint_client_js]
steps:
- name: Git Checkout
uses: actions/checkout@v4
- name: Setup Environment
uses: ./.github/actions/setup
with:
pnpm: true
solana: true
- name: Test Client JS
run: cargo make js-test
test_client_rust:
name: Test Client Rust
runs-on: ubuntu-latest
needs: [format_and_lint_client_rust]
steps:
- name: Git Checkout
uses: actions/checkout@v4
- name: Setup Environment
uses: ./.github/actions/setup
with:
cargo-cache-key: cargo-rust-client
toolchain: test
solana: true
- name: Test Client Rust
run: cargo make rust-test