Skip to content

ci: route mollusk fixtures into fd conformance #79

ci: route mollusk fixtures into fd conformance

ci: route mollusk fixtures into fd conformance #79

Workflow file for this run

name: Main
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
format_and_lint_programs:
name: Format & Lint Programs
runs-on: ubuntu-latest
steps:
- name: Git Checkout
uses: actions/checkout@v4
- name: Setup Environment
uses: ./.github/actions/setup
with:
clippy: true
rustfmt: true
- name: Format Programs
run: pnpm programs:format
- name: Lint Programs
run: pnpm programs:lint
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
- name: Format Client JS
run: pnpm clients:js:format
- name: Lint Client JS
run: pnpm clients: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:
clippy: true
rustfmt: true
- name: Format Client Rust
run: pnpm clients:rust:format
- name: Lint Client Rust
run: pnpm clients:rust:lint
build_programs:
name: Build programs
runs-on: ubuntu-latest
needs: format_and_lint_programs
steps:
- name: Git Checkout
uses: actions/checkout@v4
- name: Setup Environment
uses: ./.github/actions/setup
with:
cargo-cache-key: cargo-programs
solana: true
- name: Build Programs
run: pnpm programs:build
- name: Upload Program Builds
uses: actions/upload-artifact@v4
with:
name: program-builds
path: ./target/deploy/*.so
if-no-files-found: error
- name: Save Program Builds For Client Jobs
uses: actions/cache/save@v4
with:
path: ./**/*.so
key: ${{ runner.os }}-builds-${{ github.sha }}
test_programs:
name: Test Programs
runs-on: ubuntu-latest
needs: format_and_lint_programs
steps:
- name: Git Checkout
uses: actions/checkout@v4
- name: Setup Environment
uses: ./.github/actions/setup
with:
cargo-cache-key: cargo-program-tests
cargo-cache-fallback-key: cargo-programs
solana: true
- name: Test Programs
run: pnpm programs:test
bench_program_compute_units:
name: Benchmark Program Compute Units
runs-on: ubuntu-latest
needs: build_programs # Cargo Bench won't build the SBPF binary...
steps:
- name: Git Checkout
uses: actions/checkout@v4
- name: Setup Environment
uses: ./.github/actions/setup
with:
cargo-cache-key: cargo-program-benches
cargo-cache-fallback-key: cargo-programs
solana: true
- name: Restore Program Builds
uses: actions/cache/restore@v4
with:
path: ./**/*.so
key: ${{ runner.os }}-builds-${{ github.sha }}
- name: Benchmark Compute Units
run: pnpm programs:bench
- name: Check Working Directory
run: |
if [ -n "$(git status --porcelain)" ]; then
test -z "$(git status --porcelain)"
echo "CU usage has changed. Please run `cargo bench` and commit the new results.";
exit 1;
fi
fd_conformance:
name: Builtin-BPF Conformance Test
runs-on: ubuntu-latest
needs: build_programs
steps:
- name: Git Checkout
uses: actions/checkout@v4
- name: Setup Environment
uses: ./.github/actions/setup
with:
cargo-cache-key: cargo-program-conformance
cargo-cache-fallback-key: cargo-programs
solana: true
- name: Restore Program Builds
uses: actions/cache/restore@v4
with:
path: ./**/*.so
key: ${{ runner.os }}-builds-${{ github.sha }}
- name: Builtin-BPF Conformance Test
shell: bash
run: pnpm zx ./scripts/ci/fd-conformance.mjs
## SKIP: IDL is hand-cranked here for now.
##
# generate_idls:
# name: Check IDL Generation
# runs-on: ubuntu-latest
# needs: format_and_lint_programs
# steps:
# - name: Git Checkout
# uses: actions/checkout@v4
# - name: Setup Environment
# uses: ./.github/actions/setup
# with:
# cargo-cache-key: cargo-programs
# cargo-cache-local-key: cargo-local
# - name: Generate IDLs
# run: pnpm generate:idls
# - name: Check Working Directory
# run: |
# git status --porcelain
# test -z "$(git status --porcelain)"
generate_clients:
name: Check Client Generation
runs-on: ubuntu-latest
needs: format_and_lint_programs
steps:
- name: Git Checkout
uses: actions/checkout@v4
- name: Setup Environment
uses: ./.github/actions/setup
with:
rustfmt: true
- 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: build_programs
steps:
- name: Git Checkout
uses: actions/checkout@v4
- name: Setup Environment
uses: ./.github/actions/setup
with:
solana: true
- name: Restore Program Builds
uses: actions/cache/restore@v4
with:
path: ./**/*.so
key: ${{ runner.os }}-builds-${{ github.sha }}
- name: Test Client JS
run: pnpm clients:js:test
test_client_rust:
name: Test Client Rust
runs-on: ubuntu-latest
needs: build_programs
steps:
- name: Git Checkout
uses: actions/checkout@v4
- name: Setup Environment
uses: ./.github/actions/setup
with:
cargo-cache-key: cargo-rust-client
solana: true
- name: Restore Program Builds
uses: actions/cache/restore@v4
with:
path: ./**/*.so
key: ${{ runner.os }}-builds-${{ github.sha }}
- name: Test Client Rust
run: pnpm clients:rust:test