|
|
@@ -6,194 +6,42 @@ on:
|
|
|
pull_request:
|
|
|
branches: [main]
|
|
|
|
|
|
-jobs:
|
|
|
- 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:
|
|
|
- clippy: true
|
|
|
- rustfmt: true
|
|
|
- cargo-cache-key: cargo-interface-lint
|
|
|
- cargo-cache-fallback-key: cargo-interface
|
|
|
-
|
|
|
- - name: Format
|
|
|
- run: pnpm interface:format
|
|
|
-
|
|
|
- - name: Lint
|
|
|
- run: pnpm interface:lint
|
|
|
-
|
|
|
- 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
|
|
|
- cargo-cache-key: cargo-programs-lint
|
|
|
- cargo-cache-fallback-key: cargo-programs
|
|
|
-
|
|
|
- - name: Format
|
|
|
- run: pnpm programs:format
|
|
|
-
|
|
|
- - name: Lint
|
|
|
- run: pnpm programs:lint
|
|
|
-
|
|
|
- format_and_lint_cli:
|
|
|
- name: Format & Lint CLI
|
|
|
- runs-on: ubuntu-latest
|
|
|
- steps:
|
|
|
- - name: Git Checkout
|
|
|
- uses: actions/checkout@v4
|
|
|
-
|
|
|
- - name: Setup Environment
|
|
|
- uses: ./.github/actions/setup
|
|
|
- with:
|
|
|
- clippy: true
|
|
|
- rustfmt: true
|
|
|
- cli: true
|
|
|
- cargo-cache-key: cargo-cli-lint
|
|
|
- cargo-cache-fallback-key: cargo-cli
|
|
|
-
|
|
|
- - name: Format
|
|
|
- run: pnpm clients:cli:format
|
|
|
-
|
|
|
- - name: Lint
|
|
|
- run: pnpm clients:cli:lint
|
|
|
-
|
|
|
- audit_rust:
|
|
|
- name: Audit 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-audit
|
|
|
-
|
|
|
- - name: Install cargo-audit
|
|
|
- uses: taiki-e/install-action@v2
|
|
|
- with:
|
|
|
- tool: cargo-audit
|
|
|
-
|
|
|
- - name: Run cargo-audit
|
|
|
- run: pnpm rust:audit
|
|
|
+env:
|
|
|
+ SBPF_PROGRAM_PACKAGES: "['program']"
|
|
|
+ RUST_PACKAGES: "['clients-cli', 'interface', 'program']"
|
|
|
+ WASM_PACKAGES: "['interface', 'program']"
|
|
|
|
|
|
- spellcheck_rust:
|
|
|
- name: Spellcheck 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-spellcheck
|
|
|
-
|
|
|
- - name: Install cargo-spellcheck
|
|
|
- uses: taiki-e/install-action@v2
|
|
|
- with:
|
|
|
- tool: cargo-spellcheck
|
|
|
-
|
|
|
- - name: Run cargo-spellcheck
|
|
|
- run: pnpm rust:spellcheck
|
|
|
-
|
|
|
- build_programs:
|
|
|
- name: Build programs
|
|
|
- runs-on: ubuntu-latest
|
|
|
- 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 Program
|
|
|
- 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: ./target/deploy/*.so
|
|
|
- key: ${{ runner.os }}-builds-${{ github.sha }}
|
|
|
-
|
|
|
- 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:
|
|
|
- cargo-cache-key: cargo-interface-tests
|
|
|
- cargo-cache-fallback-key: cargo-interface
|
|
|
-
|
|
|
- - name: Test
|
|
|
- run: pnpm interface:test
|
|
|
-
|
|
|
- test_programs:
|
|
|
- name: Test Programs
|
|
|
- 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-tests
|
|
|
- cargo-cache-fallback-key: cargo-programs
|
|
|
- solana: true
|
|
|
- cli: true
|
|
|
-
|
|
|
- - name: Test Programs
|
|
|
- run: pnpm programs:test
|
|
|
-
|
|
|
- test_client_cli:
|
|
|
- name: Test CLI
|
|
|
- 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-cli-tests
|
|
|
- cargo-cache-fallback-key: cargo-cli
|
|
|
- cli: true
|
|
|
-
|
|
|
- - name: Restore Program Builds
|
|
|
- uses: actions/cache/restore@v4
|
|
|
- with:
|
|
|
- path: ./target/deploy/*.so
|
|
|
- key: ${{ runner.os }}-builds-${{ github.sha }}
|
|
|
-
|
|
|
- - name: Test
|
|
|
- run: pnpm clients:cli:test
|
|
|
+jobs:
|
|
|
+ set_env:
|
|
|
+ name: Set variables to be used in strategy definitions in reusable workflow
|
|
|
+ runs-on: ubuntu-latest
|
|
|
+ outputs:
|
|
|
+ SBPF_PROGRAM_PACKAGES: ${{ steps.compute.outputs.SBPF_PROGRAM_PACKAGES }}
|
|
|
+ RUST_PACKAGES: ${{ steps.compute.outputs.RUST_PACKAGES }}
|
|
|
+ WASM_PACKAGES: ${{ steps.compute.outputs.WASM_PACKAGES }}
|
|
|
+ RUST_TOOLCHAIN_NIGHTLY: ${{ steps.compute.outputs.RUST_TOOLCHAIN_NIGHTLY }}
|
|
|
+ SOLANA_CLI_VERSION: ${{ steps.compute.outputs.SOLANA_CLI_VERSION }}
|
|
|
+ steps:
|
|
|
+ - name: Git Checkout
|
|
|
+ uses: actions/checkout@v4
|
|
|
+
|
|
|
+ - name: Compute variables
|
|
|
+ id: compute
|
|
|
+ shell: bash
|
|
|
+ run: |
|
|
|
+ echo "SBPF_PROGRAM_PACKAGES=${{ env.SBPF_PROGRAM_PACKAGES }}" >> $GITHUB_OUTPUT
|
|
|
+ echo "RUST_PACKAGES=${{ env.RUST_PACKAGES }}" >> $GITHUB_OUTPUT
|
|
|
+ echo "WASM_PACKAGES=${{ env.WASM_PACKAGES }}" >> $GITHUB_OUTPUT
|
|
|
+ echo "RUST_TOOLCHAIN_NIGHTLY=$(make rust-toolchain-nightly)" >> "$GITHUB_OUTPUT"
|
|
|
+ echo "SOLANA_CLI_VERSION=$(make solana-cli-version)" >> "$GITHUB_OUTPUT"
|
|
|
+
|
|
|
+ main:
|
|
|
+ needs: set_env
|
|
|
+ uses: solana-program/actions/.github/workflows/main.yml@main
|
|
|
+ with:
|
|
|
+ sbpf-program-packages: ${{ needs.set_env.outputs.SBPF_PROGRAM_PACKAGES }}
|
|
|
+ rust-packages: ${{ needs.set_env.outputs.RUST_PACKAGES }}
|
|
|
+ wasm-packages: ${{ needs.set_env.outputs.WASM_PACKAGES }}
|
|
|
+ rustfmt-toolchain: ${{ needs.set_env.outputs.RUST_TOOLCHAIN_NIGHTLY }}
|
|
|
+ clippy-toolchain: ${{ needs.set_env.outputs.RUST_TOOLCHAIN_NIGHTLY }}
|
|
|
+ solana-cli-version: ${{ needs.set_env.outputs.SOLANA_CLI_VERSION }}
|