Skip to content

ci: use proper toolchains in publish rust action #163

ci: use proper toolchains in publish rust action

ci: use proper toolchains in publish rust action #163

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: make format-js
- name: Lint Client JS
run: make lint-js
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: make format-clients-rust
- name: Lint / Clippy
run: make clippy-clients-rust
- name: Lint / Docs
run: make lint-docs-clients-rust
- name: Lint / Features
run: make lint-features-clients-rust
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: make format-interface
- name: Lint / Clippy
run: make clippy-interface
- name: Lint / Docs
run: make lint-docs-interface
- name: Lint / Features
run: make lint-features-interface
format_and_lint_program:
name: Format & Lint Program
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: make format-program
- name: Lint / Clippy
run: make clippy-program
- name: Lint / Docs
run: make lint-docs-program
- name: Lint / Features
run: make lint-features-program
test_interface:
name: Test Interface
runs-on: ubuntu-latest
steps:
- name: Git Checkout
uses: actions/checkout@v4
- name: Setup Environment
uses: ./.github/actions/setup
with:
toolchain: test
cargo-cache-key: cargo-interface
- name: Test Interface
run: make test-interface
build_program:
name: Build Program
runs-on: ubuntu-latest
steps:
- name: Git Checkout
uses: actions/checkout@v4
- name: Setup Environment
uses: ./.github/actions/setup
with:
cargo-cache-key: cargo-program
solana: true
- name: Build Program
run: make build-program
test_program:
name: Test Program
runs-on: ubuntu-latest
steps:
- name: Git Checkout
uses: actions/checkout@v4
- name: Setup Environment
uses: ./.github/actions/setup
with:
toolchain: test
cargo-cache-key: cargo-program
solana: true
- name: Test Program
run: make test-program
bench_program_compute_units:
name: Benchmark Program Compute Units
runs-on: ubuntu-latest
needs: build_program # 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-program
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: make bench-program-compute-units
- 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
conformance:
name: Conformance Test
runs-on: ubuntu-latest
needs: build_program
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-program
solana: true
- name: Install System Dependencies
run: |
sudo apt-get update
sudo apt-get install -y libudev-dev pkg-config
command -v mollusk >/dev/null 2>&1 || cargo install mollusk-svm-cli
- name: Restore Program Builds
uses: actions/cache/restore@v4
with:
path: ./**/*.so
key: ${{ runner.os }}-builds-${{ github.sha }}
- name: Conformance Test
run: make conformance
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
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: make test-js
test_client_rust:
name: Test Client Rust
runs-on: ubuntu-latest
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: make test-clients-rust