|
@@ -12,203 +12,223 @@ env:
|
|
|
{% if programFramework === 'anchor' %}
|
|
{% if programFramework === 'anchor' %}
|
|
|
ANCHOR_VERSION: 0.30.0
|
|
ANCHOR_VERSION: 0.30.0
|
|
|
{% endif %}
|
|
{% endif %}
|
|
|
- CARGO_CACHE: |
|
|
|
|
|
- ~/.cargo/bin/
|
|
|
|
|
- ~/.cargo/registry/index/
|
|
|
|
|
- ~/.cargo/registry/cache/
|
|
|
|
|
- ~/.cargo/git/db/
|
|
|
|
|
- target/
|
|
|
|
|
|
|
|
|
|
jobs:
|
|
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
|
|
|
|
|
+ node: {% raw %}${{ env.NODE_VERSION }}{% endraw %}
|
|
|
|
|
+ rustfmt: true
|
|
|
|
|
+
|
|
|
|
|
+ - name: Format Programs
|
|
|
|
|
+ run: pnpm programs:format
|
|
|
|
|
+
|
|
|
|
|
+ - name: Lint Programs
|
|
|
|
|
+ run: pnpm programs:lint
|
|
|
|
|
+
|
|
|
|
|
+{% if jsClient %}
|
|
|
|
|
+ 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:
|
|
|
|
|
+ node: {% raw %}${{ env.NODE_VERSION }}{% endraw %}
|
|
|
|
|
+
|
|
|
|
|
+ - name: Format Client JS
|
|
|
|
|
+ run: pnpm clients:js:format
|
|
|
|
|
+
|
|
|
|
|
+ - name: Lint Client JS
|
|
|
|
|
+ run: pnpm clients:js:lint
|
|
|
|
|
+{% endif %}
|
|
|
|
|
+
|
|
|
|
|
+{% if rustClient %}
|
|
|
|
|
+ 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
|
|
|
|
|
+ node: {% raw %}${{ env.NODE_VERSION }}{% endraw %}
|
|
|
|
|
+ rustfmt: true
|
|
|
|
|
+
|
|
|
|
|
+ - name: Format Client Rust
|
|
|
|
|
+ run: pnpm clients:rust:format
|
|
|
|
|
+
|
|
|
|
|
+ - name: Lint Client Rust
|
|
|
|
|
+ run: pnpm clients:rust:lint
|
|
|
|
|
+{% endif %}
|
|
|
|
|
+
|
|
|
build_programs:
|
|
build_programs:
|
|
|
name: Build programs
|
|
name: Build programs
|
|
|
runs-on: ubuntu-latest
|
|
runs-on: ubuntu-latest
|
|
|
|
|
+ needs: format_and_lint_programs
|
|
|
steps:
|
|
steps:
|
|
|
- - name: Git checkout
|
|
|
|
|
|
|
+ - name: Git Checkout
|
|
|
uses: actions/checkout@v4
|
|
uses: actions/checkout@v4
|
|
|
- - name: Setup environment
|
|
|
|
|
|
|
+
|
|
|
|
|
+ - name: Setup Environment
|
|
|
uses: ./.github/actions/setup
|
|
uses: ./.github/actions/setup
|
|
|
with:
|
|
with:
|
|
|
|
|
+ cargo-cache-key: cargo-programs
|
|
|
node: {% raw %}${{ env.NODE_VERSION }}{% endraw %}
|
|
node: {% raw %}${{ env.NODE_VERSION }}{% endraw %}
|
|
|
solana: {% raw %}${{ env.SOLANA_VERSION }}{% endraw %}
|
|
solana: {% raw %}${{ env.SOLANA_VERSION }}{% endraw %}
|
|
|
{% if programFramework === 'anchor' %}
|
|
{% if programFramework === 'anchor' %}
|
|
|
anchor: {% raw %}${{ env.ANCHOR_VERSION }}{% endraw %}
|
|
anchor: {% raw %}${{ env.ANCHOR_VERSION }}{% endraw %}
|
|
|
{% endif %}
|
|
{% endif %}
|
|
|
- - name: Cache cargo dependencies
|
|
|
|
|
- uses: actions/cache@v4
|
|
|
|
|
- with:
|
|
|
|
|
- path: {% raw %}${{ env.CARGO_CACHE }}{% endraw %}
|
|
|
|
|
- key: {% raw %}${{ runner.os }}-cargo-programs-${{ hashFiles('**/Cargo.lock') }}{% endraw %}
|
|
|
|
|
- restore-keys: {% raw %}${{ runner.os }}-cargo-programs{% endraw %}
|
|
|
|
|
- - name: Build programs
|
|
|
|
|
|
|
+
|
|
|
|
|
+ - name: Build Programs
|
|
|
run: pnpm programs:build
|
|
run: pnpm programs:build
|
|
|
- - name: Upload program builds
|
|
|
|
|
|
|
+
|
|
|
|
|
+ - name: Upload Program Builds
|
|
|
uses: actions/upload-artifact@v4
|
|
uses: actions/upload-artifact@v4
|
|
|
with:
|
|
with:
|
|
|
name: program-builds
|
|
name: program-builds
|
|
|
path: ./target/deploy/*.so
|
|
path: ./target/deploy/*.so
|
|
|
if-no-files-found: error
|
|
if-no-files-found: error
|
|
|
- - name: Save all builds for clients
|
|
|
|
|
|
|
+
|
|
|
|
|
+ - name: Save Program Builds For Client Jobs
|
|
|
uses: actions/cache/save@v4
|
|
uses: actions/cache/save@v4
|
|
|
with:
|
|
with:
|
|
|
path: ./**/*.so
|
|
path: ./**/*.so
|
|
|
key: {% raw %}${{ runner.os }}-builds-${{ github.sha }}{% endraw %}
|
|
key: {% raw %}${{ runner.os }}-builds-${{ github.sha }}{% endraw %}
|
|
|
|
|
|
|
|
test_programs:
|
|
test_programs:
|
|
|
- name: Test programs
|
|
|
|
|
|
|
+ name: Test Progams
|
|
|
runs-on: ubuntu-latest
|
|
runs-on: ubuntu-latest
|
|
|
|
|
+ needs: format_and_lint_programs
|
|
|
steps:
|
|
steps:
|
|
|
- - name: Git checkout
|
|
|
|
|
|
|
+ - name: Git Checkout
|
|
|
uses: actions/checkout@v4
|
|
uses: actions/checkout@v4
|
|
|
- - name: Setup environment
|
|
|
|
|
|
|
+
|
|
|
|
|
+ - name: Setup Environment
|
|
|
uses: ./.github/actions/setup
|
|
uses: ./.github/actions/setup
|
|
|
with:
|
|
with:
|
|
|
|
|
+ cargo-cache-key: cargo-program-tests
|
|
|
|
|
+ cargo-cache-fallback-key: cargo-programs
|
|
|
node: {% raw %}${{ env.NODE_VERSION }}{% endraw %}
|
|
node: {% raw %}${{ env.NODE_VERSION }}{% endraw %}
|
|
|
solana: {% raw %}${{ env.SOLANA_VERSION }}{% endraw %}
|
|
solana: {% raw %}${{ env.SOLANA_VERSION }}{% endraw %}
|
|
|
{% if programFramework === 'anchor' %}
|
|
{% if programFramework === 'anchor' %}
|
|
|
anchor: {% raw %}${{ env.ANCHOR_VERSION }}{% endraw %}
|
|
anchor: {% raw %}${{ env.ANCHOR_VERSION }}{% endraw %}
|
|
|
{% endif %}
|
|
{% endif %}
|
|
|
- - name: Cache test cargo dependencies
|
|
|
|
|
- uses: actions/cache@v4
|
|
|
|
|
- with:
|
|
|
|
|
- path: {% raw %}${{ env.CARGO_CACHE }}{% endraw %}
|
|
|
|
|
- key: {% raw %}${{ runner.os }}-cargo-program-tests-${{ hashFiles('**/Cargo.lock') }}{% endraw %}
|
|
|
|
|
- restore-keys: |
|
|
|
|
|
- {% raw %}${{ runner.os }}-cargo-program-tests{% endraw %}
|
|
|
|
|
- {% raw %}${{ runner.os }}-cargo-programs-${{ hashFiles('**/Cargo.lock') }}{% endraw %}
|
|
|
|
|
- {% raw %}${{ runner.os }}-cargo-programs{% endraw %}
|
|
|
|
|
- - name: Test programs
|
|
|
|
|
|
|
+
|
|
|
|
|
+ - name: Test Programs
|
|
|
run: pnpm programs:test
|
|
run: pnpm programs:test
|
|
|
|
|
|
|
|
generate_idls:
|
|
generate_idls:
|
|
|
- name: Check IDL generation
|
|
|
|
|
- needs: build_programs
|
|
|
|
|
|
|
+ name: Check IDL Generation
|
|
|
runs-on: ubuntu-latest
|
|
runs-on: ubuntu-latest
|
|
|
|
|
+ needs: format_and_lint_programs
|
|
|
steps:
|
|
steps:
|
|
|
- - name: Git checkout
|
|
|
|
|
|
|
+ - name: Git Checkout
|
|
|
uses: actions/checkout@v4
|
|
uses: actions/checkout@v4
|
|
|
- - name: Setup environment
|
|
|
|
|
|
|
+
|
|
|
|
|
+ - name: Setup Environment
|
|
|
uses: ./.github/actions/setup
|
|
uses: ./.github/actions/setup
|
|
|
with:
|
|
with:
|
|
|
|
|
+ cargo-cache-key: cargo-programs
|
|
|
|
|
+ cargo-cache-local-key: cargo-local
|
|
|
node: {% raw %}${{ env.NODE_VERSION }}{% endraw %}
|
|
node: {% raw %}${{ env.NODE_VERSION }}{% endraw %}
|
|
|
- solana: {% raw %}${{ env.SOLANA_VERSION }}{% endraw %}
|
|
|
|
|
{% if programFramework === 'anchor' %}
|
|
{% if programFramework === 'anchor' %}
|
|
|
anchor: {% raw %}${{ env.ANCHOR_VERSION }}{% endraw %}
|
|
anchor: {% raw %}${{ env.ANCHOR_VERSION }}{% endraw %}
|
|
|
{% endif %}
|
|
{% endif %}
|
|
|
- - name: Cache cargo dependencies
|
|
|
|
|
- uses: actions/cache@v4
|
|
|
|
|
- with:
|
|
|
|
|
- path: {% raw %}${{ env.CARGO_CACHE }}{% endraw %}
|
|
|
|
|
- key: {% raw %}${{ runner.os }}-cargo-programs-${{ hashFiles('**/Cargo.lock') }}{% endraw %}
|
|
|
|
|
- restore-keys: {% raw %}${{ runner.os }}-cargo-programs{% endraw %}
|
|
|
|
|
- - name: Cache local cargo dependencies
|
|
|
|
|
- uses: actions/cache@v4
|
|
|
|
|
- with:
|
|
|
|
|
- path: |
|
|
|
|
|
- .cargo/bin/
|
|
|
|
|
- .cargo/registry/index/
|
|
|
|
|
- .cargo/registry/cache/
|
|
|
|
|
- .cargo/git/db/
|
|
|
|
|
- key: {% raw %}${{ runner.os }}-cargo-local-${{ hashFiles('**/Cargo.lock') }}{% endraw %}
|
|
|
|
|
- restore-keys: {% raw %}${{ runner.os }}-cargo-local{% endraw %}
|
|
|
|
|
|
|
+
|
|
|
- name: Generate IDLs
|
|
- name: Generate IDLs
|
|
|
run: pnpm generate:idls
|
|
run: pnpm generate:idls
|
|
|
- - name: Ensure working directory is clean
|
|
|
|
|
- run: test -z "$(git status --porcelain)"
|
|
|
|
|
|
|
+
|
|
|
|
|
+ - name: Check Working Directory
|
|
|
|
|
+ run: |
|
|
|
|
|
+ git status --porcelain
|
|
|
|
|
+ test -z "$(git status --porcelain)"
|
|
|
|
|
|
|
|
{% if clients.length > 0 %}
|
|
{% if clients.length > 0 %}
|
|
|
generate_clients:
|
|
generate_clients:
|
|
|
- name: Check client generation
|
|
|
|
|
- needs: build_programs
|
|
|
|
|
|
|
+ name: Check Client Generation
|
|
|
runs-on: ubuntu-latest
|
|
runs-on: ubuntu-latest
|
|
|
|
|
+ needs: format_and_lint_programs
|
|
|
steps:
|
|
steps:
|
|
|
- - name: Git checkout
|
|
|
|
|
|
|
+ - name: Git Checkout
|
|
|
uses: actions/checkout@v4
|
|
uses: actions/checkout@v4
|
|
|
- - name: Setup environment
|
|
|
|
|
|
|
+
|
|
|
|
|
+ - name: Setup Environment
|
|
|
uses: ./.github/actions/setup
|
|
uses: ./.github/actions/setup
|
|
|
with:
|
|
with:
|
|
|
node: {% raw %}${{ env.NODE_VERSION }}{% endraw %}
|
|
node: {% raw %}${{ env.NODE_VERSION }}{% endraw %}
|
|
|
- solana: {% raw %}${{ env.SOLANA_VERSION }}{% endraw %}
|
|
|
|
|
- - name: Generate clients
|
|
|
|
|
|
|
+ rustfmt: true
|
|
|
|
|
+
|
|
|
|
|
+ - name: Generate Clients
|
|
|
run: pnpm generate:clients
|
|
run: pnpm generate:clients
|
|
|
- - name: Ensure working directory is clean
|
|
|
|
|
- run: test -z "$(git status --porcelain)"
|
|
|
|
|
|
|
+
|
|
|
|
|
+ - name: Check Working Directory
|
|
|
|
|
+ run: |
|
|
|
|
|
+ git status --porcelain
|
|
|
|
|
+ test -z "$(git status --porcelain)"
|
|
|
{% endif %}
|
|
{% endif %}
|
|
|
|
|
|
|
|
{% if jsClient %}
|
|
{% if jsClient %}
|
|
|
- test_js:
|
|
|
|
|
- name: Test JS client
|
|
|
|
|
- needs: build_programs
|
|
|
|
|
|
|
+ test_client_js:
|
|
|
|
|
+ name: Test Client JS
|
|
|
runs-on: ubuntu-latest
|
|
runs-on: ubuntu-latest
|
|
|
|
|
+ needs: build_programs
|
|
|
steps:
|
|
steps:
|
|
|
- - name: Git checkout
|
|
|
|
|
|
|
+ - name: Git Checkout
|
|
|
uses: actions/checkout@v4
|
|
uses: actions/checkout@v4
|
|
|
- - name: Setup environment
|
|
|
|
|
|
|
+
|
|
|
|
|
+ - name: Setup Environment
|
|
|
uses: ./.github/actions/setup
|
|
uses: ./.github/actions/setup
|
|
|
with:
|
|
with:
|
|
|
node: {% raw %}${{ env.NODE_VERSION }}{% endraw %}
|
|
node: {% raw %}${{ env.NODE_VERSION }}{% endraw %}
|
|
|
solana: {% raw %}${{ env.SOLANA_VERSION }}{% endraw %}
|
|
solana: {% raw %}${{ env.SOLANA_VERSION }}{% endraw %}
|
|
|
- - name: Restore all builds
|
|
|
|
|
|
|
+
|
|
|
|
|
+ - name: Restore Program Builds
|
|
|
uses: actions/cache/restore@v4
|
|
uses: actions/cache/restore@v4
|
|
|
with:
|
|
with:
|
|
|
path: ./**/*.so
|
|
path: ./**/*.so
|
|
|
key: {% raw %}${{ runner.os }}-builds-${{ github.sha }}{% endraw %}
|
|
key: {% raw %}${{ runner.os }}-builds-${{ github.sha }}{% endraw %}
|
|
|
- - name: Test JS client
|
|
|
|
|
- run: pnpm clients:js:test
|
|
|
|
|
|
|
|
|
|
- lint_js:
|
|
|
|
|
- name: Lint JS client
|
|
|
|
|
- needs: build_programs
|
|
|
|
|
- runs-on: ubuntu-latest
|
|
|
|
|
- steps:
|
|
|
|
|
- - name: Git checkout
|
|
|
|
|
- uses: actions/checkout@v4
|
|
|
|
|
- - name: Setup environment
|
|
|
|
|
- uses: ./.github/actions/setup
|
|
|
|
|
- with:
|
|
|
|
|
- node: {% raw %}${{ env.NODE_VERSION }}{% endraw %}
|
|
|
|
|
- - name: Lint JS client
|
|
|
|
|
- run: pnpm clients:js:lint
|
|
|
|
|
|
|
+ - name: Test Client JS
|
|
|
|
|
+ run: pnpm clients:js:test
|
|
|
{% endif %}
|
|
{% endif %}
|
|
|
|
|
|
|
|
{% if rustClient %}
|
|
{% if rustClient %}
|
|
|
- test_rust:
|
|
|
|
|
- name: Test Rust client
|
|
|
|
|
- needs: build_programs
|
|
|
|
|
|
|
+ test_client_rust:
|
|
|
|
|
+ name: Test Client Rust
|
|
|
runs-on: ubuntu-latest
|
|
runs-on: ubuntu-latest
|
|
|
|
|
+ needs: build_programs
|
|
|
steps:
|
|
steps:
|
|
|
- - name: Git checkout
|
|
|
|
|
|
|
+ - name: Git Checkout
|
|
|
uses: actions/checkout@v4
|
|
uses: actions/checkout@v4
|
|
|
- - name: Setup environment
|
|
|
|
|
|
|
+
|
|
|
|
|
+ - name: Setup Environment
|
|
|
uses: ./.github/actions/setup
|
|
uses: ./.github/actions/setup
|
|
|
with:
|
|
with:
|
|
|
|
|
+ cargo-cache-key: cargo-rust-client
|
|
|
node: {% raw %}${{ env.NODE_VERSION }}{% endraw %}
|
|
node: {% raw %}${{ env.NODE_VERSION }}{% endraw %}
|
|
|
solana: {% raw %}${{ env.SOLANA_VERSION }}{% endraw %}
|
|
solana: {% raw %}${{ env.SOLANA_VERSION }}{% endraw %}
|
|
|
- - name: Cache Rust client dependencies
|
|
|
|
|
- uses: actions/cache@v4
|
|
|
|
|
- with:
|
|
|
|
|
- path: {% raw %}${{ env.CARGO_CACHE }}{% endraw %}
|
|
|
|
|
- key: {% raw %}${{ runner.os }}-cargo-rust-client-${{ hashFiles('**/Cargo.lock') }}{% endraw %}
|
|
|
|
|
- restore-keys: {% raw %}${{ runner.os }}-cargo-rust-client{% endraw %}
|
|
|
|
|
- - name: Restore all builds
|
|
|
|
|
|
|
+
|
|
|
|
|
+ - name: Restore Program Builds
|
|
|
uses: actions/cache/restore@v4
|
|
uses: actions/cache/restore@v4
|
|
|
with:
|
|
with:
|
|
|
path: ./**/*.so
|
|
path: ./**/*.so
|
|
|
key: {% raw %}${{ runner.os }}-builds-${{ github.sha }}{% endraw %}
|
|
key: {% raw %}${{ runner.os }}-builds-${{ github.sha }}{% endraw %}
|
|
|
- - name: Test Rust client
|
|
|
|
|
- run: pnpm clients:rust:test
|
|
|
|
|
|
|
|
|
|
- lint_rust:
|
|
|
|
|
- name: Lint Rust client
|
|
|
|
|
- needs: build_programs
|
|
|
|
|
- runs-on: ubuntu-latest
|
|
|
|
|
- steps:
|
|
|
|
|
- - name: Git checkout
|
|
|
|
|
- uses: actions/checkout@v4
|
|
|
|
|
- - name: Setup environment
|
|
|
|
|
- uses: ./.github/actions/setup
|
|
|
|
|
- with:
|
|
|
|
|
- node: {% raw %}${{ env.NODE_VERSION }}{% endraw %}
|
|
|
|
|
- - name: Lint Rust client
|
|
|
|
|
- run: pnpm clients:rust:lint
|
|
|
|
|
|
|
+ - name: Test Client Rust
|
|
|
|
|
+ run: pnpm clients:rust:test
|
|
|
{% endif %}
|
|
{% endif %}
|