overhaul CI with Makefile (#52) #162
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 |