123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274 |
- 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
- - name: Format Client JS
- run: pnpm clients:js:format
- - name: Lint Client JS
- run: pnpm clients:js:lint
- format_and_lint_client_rust:
- if: false # Disabled until we have a Rust client
- 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
- rustfmt: true
- - name: Format Client Rust
- run: pnpm clients:rust:format
- - name: Lint Client Rust
- run: pnpm clients:rust:lint
- 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:
- clippy: true
- rustfmt: true
- - name: Format
- run: pnpm programs:format
- - name: Lint
- run: pnpm programs: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
- 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
- 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:
- rustfmt: true
- - name: Generate Clients
- run: pnpm generate:clients
- - name: Check Working Directory
- run: |
- 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 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: ./**/*.so
- key: ${{ runner.os }}-builds-${{ github.sha }}
- build_ptoken:
- name: Build p-token
- runs-on: ubuntu-latest
- 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 p-token:build
- - name: Upload p-token Builds
- uses: actions/upload-artifact@v4
- with:
- name: p-token-builds
- path: ./target/deploy/*.so
- if-no-files-found: error
- - name: Save p-token Build For Client Jobs
- uses: actions/cache/save@v4
- with:
- path: ./**/*.so
- key: ${{ runner.os }}-ptoken-build-${{ github.sha }}
- test_client_js:
- name: Test Client JS
- runs-on: ubuntu-latest
- needs: [format_and_lint_client_js, build_program]
- steps:
- - name: Git Checkout
- uses: actions/checkout@v4
- - name: Setup Environment
- uses: ./.github/actions/setup
- 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 clients:js:test
- test_client_rust:
- if: false # Disabled until we have a Rust client
- name: Test Client Rust
- runs-on: ubuntu-latest
- needs: format_and_lint_client_rust
- steps:
- - name: Git Checkout
- uses: actions/checkout@v4
- - name: Setup Environment
- uses: ./.github/actions/setup
- with:
- cargo-cache-key: cargo-rust-client
- solana: true
- - name: Test Client Rust
- run: pnpm clients: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-test-program
- - name: Restore Program Builds
- uses: actions/cache/restore@v4
- with:
- path: ./**/*.so
- key: ${{ runner.os }}-builds-${{ github.sha }}
- - name: Test
- run: pnpm programs:test
- conformance_ptoken:
- name: Conformance Test for p-token
- runs-on: ubuntu-latest
- needs: build_ptoken
- steps:
- - name: Git Checkout
- uses: actions/checkout@v4
- - name: Setup Environment
- uses: ./.github/actions/setup
- with:
- cargo-cache-key: cargo-fixtures-ptoken
- solana: true
- - name: Restore Program Builds
- uses: actions/cache/restore@v4
- with:
- path: ./**/*.so
- key: ${{ runner.os }}-ptoken-build-${{ github.sha }}
- - name: Install mollusk-svm-cli
- uses: taiki-e/cache-cargo-install-action@v2
- with:
- tool: mollusk-svm-cli
- - name: Generate SPL Token Fixtures
- run: pnpm fixtures:generate
- - name: Run Fixtures
- run: pnpm fixtures:run pinocchio_token_program
|