Skip to content

decouple apis and vm implementation #3570

decouple apis and vm implementation

decouple apis and vm implementation #3570

Workflow file for this run

name: HyperSDK CI
on:
push:
branches:
- main
pull_request:
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
go-mod-tidy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Go
uses: ./.github/actions/install-go
- shell: bash
run: go mod tidy
- shell: bash
working-directory: ./examples/morpheusvm
run: go mod tidy
- shell: bash
run: git diff
- shell: bash
run: scripts/tests.clean.sh
hypersdk-lint:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Go
uses: ./.github/actions/install-go
- name: Run static analysis tests
shell: bash
run: scripts/lint.sh
- name: Run shellcheck
shell: bash
run: scripts/tests.shellcheck.sh
- name: Run actionlint
shell: bash
run: scripts/tests.actionlint.sh
hypersdk-unit-tests:
runs-on: ubuntu-20.04-32
timeout-minutes: 10
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Go
uses: ./.github/actions/install-go
- name: Run unit tests
shell: bash
run: scripts/tests.unit.sh
hypersdk-benchmark-tests:
runs-on: ubuntu-20.04-32
timeout-minutes: 10
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Go
uses: ./.github/actions/install-go
- name: Run unit tests
shell: bash
run: scripts/tests.benchmark.sh
hypersdk-tests:
runs-on: ubuntu-latest
needs: [go-mod-tidy, hypersdk-lint, hypersdk-unit-tests]
outputs:
only_contracts_changed: ${{ steps.check_changes.outputs.only_contracts_changed }}
steps:
- name: Finished HyperSDK tests
run: echo "Finished HyperSDK tests"
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Check changes
id: check_changes
run: |
diff=$(git diff --name-only HEAD origin/main)
printf "diff:\n%s\n" "$diff"
output=$(echo "$diff" | grep -v '^x/contracts/' | grep -v '^Cargo.toml$' || true)
if [ -n "$diff" ] && [ -z "$output" ]; then
echo "only x/contracts changed, will skip unafected tests"
echo "only_contracts_changed=true" >> "$GITHUB_OUTPUT"
else
echo "cannot skip tests"
echo "only_contracts_changed=false" >> "$GITHUB_OUTPUT"
fi
# MorpheusVM
morpheusvm-lint:
needs: [hypersdk-tests]
if: ${{ needs.hypersdk-tests.outputs.only_contracts_changed != 'true' }}
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Go
uses: ./.github/actions/install-go
with:
cache-dependency-path: |
go.sum
examples/morpheusvm/go.sum
- name: Run static analysis tests
working-directory: ./examples/morpheusvm
shell: bash
run: scripts/lint.sh
- name: Build vm, cli
working-directory: ./examples/morpheusvm
shell: bash
run: scripts/build.sh
morpheusvm-unit-tests:
needs: [hypersdk-tests]
if: ${{ needs.hypersdk-tests.outputs.only_contracts_changed != 'true' }}
runs-on: ubuntu-20.04-32
timeout-minutes: 10
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Go
uses: ./.github/actions/install-go
with:
cache-dependency-path: |
go.sum
examples/morpheusvm/go.sum
- name: Run unit tests
working-directory: ./examples/morpheusvm
shell: bash
run: scripts/tests.unit.sh
- name: Run integration tests
working-directory: ./examples/morpheusvm
shell: bash
run: scripts/tests.integration.sh
morpheusvm-e2e-tests:
needs: [morpheusvm-lint, morpheusvm-unit-tests]
runs-on: ubuntu-20.04-32
timeout-minutes: 25
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Go
uses: ./.github/actions/install-go
with:
cache-dependency-path: |
go.sum
examples/morpheusvm/go.sum
- name: Run e2e tests
working-directory: ./examples/morpheusvm
shell: bash
run: scripts/run.sh
env:
MODE: 'test'
- name: Upload tmpnet network dir
uses: ava-labs/avalanchego/.github/actions/upload-tmpnet-artifact@v1-actions
if: always()
with:
name: morpheusvm-e2e-tmpnet-data