|
|
@@ -69,6 +69,30 @@ jobs:
|
|
|
|
|
|
- name: Lint / Features
|
|
|
run: pnpm interface:lint:features
|
|
|
+
|
|
|
+ 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: pnpm program:format
|
|
|
+
|
|
|
+ - name: Lint / Clippy
|
|
|
+ run: pnpm program:lint:clippy
|
|
|
+
|
|
|
+ - name: Lint / Docs
|
|
|
+ run: pnpm program:lint:docs
|
|
|
+
|
|
|
+ - name: Lint / Features
|
|
|
+ run: pnpm program:lint:features
|
|
|
|
|
|
wasm_interface:
|
|
|
name: Build Interface in WASM
|
|
|
@@ -130,10 +154,40 @@ jobs:
|
|
|
git status --porcelain
|
|
|
test -z "$(git status --porcelain)"
|
|
|
|
|
|
+ build_program:
|
|
|
+ name: Build Program
|
|
|
+ runs-on: ubuntu-latest
|
|
|
+ needs: format_and_lint_program
|
|
|
+ steps:
|
|
|
+ - name: Git Checkout
|
|
|
+ uses: actions/checkout@v4
|
|
|
+
|
|
|
+ - name: Setup Environment
|
|
|
+ uses: ./.github/actions/setup
|
|
|
+ with:
|
|
|
+ cargo-cache-key: cargo-build-program
|
|
|
+ solana: true
|
|
|
+
|
|
|
+ - name: Build
|
|
|
+ run: pnpm program: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_client_js:
|
|
|
name: Test Client JS
|
|
|
runs-on: ubuntu-latest
|
|
|
- needs: format_and_lint_client_js
|
|
|
+ needs: [format_and_lint_client_js, build_program]
|
|
|
steps:
|
|
|
- name: Git Checkout
|
|
|
uses: actions/checkout@v4
|
|
|
@@ -143,13 +197,19 @@ jobs:
|
|
|
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 js:test
|
|
|
|
|
|
test_client_rust:
|
|
|
name: Test Client Rust
|
|
|
runs-on: ubuntu-latest
|
|
|
- needs: format_and_lint_client_rust
|
|
|
+ needs: [format_and_lint_client_rust, build_program]
|
|
|
steps:
|
|
|
- name: Git Checkout
|
|
|
uses: actions/checkout@v4
|
|
|
@@ -161,5 +221,35 @@ jobs:
|
|
|
toolchain: test
|
|
|
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 rust:test
|
|
|
+
|
|
|
+ test_program:
|
|
|
+ name: Test Program
|
|
|
+ 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-tests
|
|
|
+ toolchain: test
|
|
|
+ solana: true
|
|
|
+
|
|
|
+ - name: Restore Program Builds
|
|
|
+ uses: actions/cache/restore@v4
|
|
|
+ with:
|
|
|
+ path: ./**/*.so
|
|
|
+ key: ${{ runner.os }}-builds-${{ github.sha }}
|
|
|
+
|
|
|
+ - name: Test
|
|
|
+ run: pnpm program:test
|