Skip to content

feat: svm deploy instructions #6648

feat: svm deploy instructions

feat: svm deploy instructions #6648

Workflow file for this run

name: Checks
on: [push, pull_request]
env:
NODE_VERSION: 20
jobs:
# Multiple jobs depend on having EVM and SVM artifacts available, so we upload them first in separate jobs.
upload-svm-artifacts:
name: Upload SVM artifacts
runs-on: ubuntu-latest
env:
ARTIFACTS_PATHS: |
target/idl
target/types
src/svm/assets
src/svm/clients
steps:
- name: Checkout repo
uses: actions/checkout@v3
- name: Cache SVM artifacts
id: svm-artifacts-cache
uses: ./.github/actions/cache-svm-artifacts
with:
type: artifacts
node_version: ${{ env.NODE_VERSION }}
- name: Generate SVM artifacts
if: steps.svm-artifacts-cache.outputs.cache-hit != 'true'
uses: ./.github/actions/generate-svm-artifacts
with:
type: artifacts
path: ${{ env.ARTIFACTS_PATHS }}
node_version: ${{ env.NODE_VERSION }}
- name: Upload SVM artifacts
uses: actions/upload-artifact@v4
with:
name: svm-artifacts-${{ runner.os }}-node-${{ env.NODE_VERSION }}
path: ${{ env.ARTIFACTS_PATHS }}
if-no-files-found: error
upload-evm-artifacts:
name: Upload EVM artifacts
runs-on: ubuntu-latest
env:
ARTIFACTS_PATHS: |
artifacts
cache
typechain
steps:
- name: Checkout repo
uses: actions/checkout@v3
- name: Cache EVM artifacts
id: evm-artifacts-cache
uses: ./.github/actions/cache-evm-artifacts
with:
node_version: ${{ env.NODE_VERSION }}
- name: Generate EVM artifacts
if: steps.evm-artifacts-cache.outputs.cache-hit != 'true'
uses: ./.github/actions/generate-evm-artifacts
with:
path: ${{ env.ARTIFACTS_PATHS }}
node_version: ${{ env.NODE_VERSION }}
- name: Upload EVM artifacts
uses: actions/upload-artifact@v4
with:
name: evm-artifacts-${{ runner.os }}-node-${{ env.NODE_VERSION }}
path: ${{ env.ARTIFACTS_PATHS }}
if-no-files-found: error
lint:
name: Lint
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v3
- name: "Use Node ${{ env.NODE_VERSION }}"
uses: actions/setup-node@v3
with:
node-version: "${{ env.NODE_VERSION }}"
cache: yarn
- name: Install Cargo toolchain
uses: actions-rs/toolchain@v1
with:
toolchain: nightly
profile: minimal
components: rustc, rustfmt
- name: Cache Cargo dependencies
uses: Swatinem/rust-cache@v2
- name: Install packages
run: yarn install --frozen-lockfile --ignore-optional
- name: Lint js
shell: bash
run: yarn lint-js
- name: Lint solidity
shell: bash
run: yarn lint-solidity
- name: Lint rust
shell: bash
run: yarn lint-rust
test-evm:
name: Test EVM
# Mixed leaf tests also require SVM types from assets that have been uploaded in the artifacts.
needs:
- upload-svm-artifacts
- upload-evm-artifacts
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v3
- name: "Use Node ${{ env.NODE_VERSION }}"
uses: actions/setup-node@v3
with:
node-version: "${{ env.NODE_VERSION }}"
cache: yarn
- name: Install packages
run: yarn install --frozen-lockfile --ignore-optional
- name: Download SVM artifacts
uses: actions/download-artifact@v4
with:
name: svm-artifacts-${{ runner.os }}-node-${{ env.NODE_VERSION }}
- name: Download EVM artifacts
uses: actions/download-artifact@v4
with:
name: evm-artifacts-${{ runner.os }}-node-${{ env.NODE_VERSION }}
- name: Test evm-hardhat
shell: bash
run: yarn test-evm
test-svm-verified:
name: Test verified SVM build
needs: upload-svm-artifacts
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v3
- name: "Use Node ${{ env.NODE_VERSION }}"
uses: actions/setup-node@v3
with:
node-version: "${{ env.NODE_VERSION }}"
cache: yarn
- name: Install packages
run: yarn install --frozen-lockfile --ignore-optional
- name: Setup Anchor & Solana
uses: ./.github/actions/setup-solana-anchor
with:
verify_version: 0.4.3
node_version: ${{ env.NODE_VERSION }}
- name: Download SVM artifacts
uses: actions/download-artifact@v4
with:
name: svm-artifacts-${{ runner.os }}-node-${{ env.NODE_VERSION }}
# Cargo cache would only apply to dependencies that are not reused in the verified docker build, hence we need to
# manually cache the verified build binaries if the program source code has not changed.
- name: Cache verified test build binaries
id: verified-test-build-cache
uses: ./.github/actions/cache-svm-artifacts
with:
type: verified-test-binaries
node_version: ${{ env.NODE_VERSION }}
- name: Create verified build
if: steps.verified-test-build-cache.outputs.cache-hit != 'true'
env:
IS_TEST: true
run: yarn build-svm-solana-verify
- name: Archive verified test build (for caching)
if: steps.verified-test-build-cache.outputs.cache-hit != 'true'
run: tar -cf svm-verified-test-binaries.tar target/deploy
- name: Test verified SVM build
run: anchor test --skip-build
build-ts:
name: Build TypeScript
needs:
- upload-svm-artifacts
- upload-evm-artifacts
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v3
- name: "Use Node ${{ env.NODE_VERSION }}"
uses: actions/setup-node@v3
with:
node-version: "${{ env.NODE_VERSION }}"
cache: yarn
- name: Install packages
run: yarn install --frozen-lockfile --ignore-optional
- name: Download SVM artifacts
uses: actions/download-artifact@v4
with:
name: svm-artifacts-${{ runner.os }}-node-${{ env.NODE_VERSION }}
- name: Download EVM artifacts
uses: actions/download-artifact@v4
with:
name: evm-artifacts-${{ runner.os }}-node-${{ env.NODE_VERSION }}
- name: Build TypeScript
run: yarn build-ts
forge:
name: Forge
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v3
- name: "Use Node ${{ env.NODE_VERSION }}"
uses: actions/setup-node@v3
with:
node-version: "${{ env.NODE_VERSION }}"
cache: yarn
- name: Install packages
run: yarn install --frozen-lockfile --ignore-optional
- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1
- name: Install forge dependencies
run: forge install
- name: Inspect storage layouts
run: ./scripts/checkStorageLayout.sh
- name: Test evm-foundry
run: forge test --match-path test/evm/foundry/local/**/*.t.sol