feat: svm deploy instructions #6648
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |