Skip to content

Cleanup bash scripts #2235

Cleanup bash scripts

Cleanup bash scripts #2235

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:
mock-gen:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Go
uses: ./.github/actions/install-go
- shell: bash
run: scripts/mock.gen.sh
- shell: bash
run: scripts/tests.clean.sh
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: Install Rust
uses: ./.github/actions/install-rust
with:
targets: wasm32-unknown-unknown
cache: false
- name: Run unit tests
shell: bash
run: scripts/tests.unit.sh
hypersdk-tests:
runs-on: ubuntu-latest
needs: [mock-gen, go-mod-tidy, hypersdk-lint, hypersdk-unit-tests]
outputs:
only_programs_changed: ${{ steps.check_changes.outputs.only_programs_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/programs/' || true)
if [ -n "$diff" ] && [ -z "$output" ]; then
echo "only x/programs changed, will skip unafected tests"
echo "only_programs_changed=true" >> "$GITHUB_OUTPUT"
else
echo "cannot skip tests"
echo "only_programs_changed=false" >> "$GITHUB_OUTPUT"
fi
# MorpheusVM
morpheusvm-lint:
needs: [hypersdk-tests]
if: ${{ needs.hypersdk-tests.outputs.only_programs_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_programs_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: [hypersdk-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
morpheusvm-release:
needs: [morpheusvm-lint, morpheusvm-unit-tests, morpheusvm-e2e-tests]
# We build with 20.04 to maintain max compatibility: https://github.com/golang/go/issues/57328
runs-on: ubuntu-20.04-32
permissions:
contents: write
steps:
- name: Checkout
uses: actions/checkout@v4
- uses: ./.github/actions/vm-release
with:
vm-name: morpheusvm
github-token: ${{ secrets.GITHUB_TOKEN }}