You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
402 lines
10 KiB
402 lines
10 KiB
name: test
|
|
|
|
on:
|
|
# Triggers the workflow on push or pull request against main
|
|
push:
|
|
branches: [main]
|
|
pull_request:
|
|
branches: [main]
|
|
# Allows you to run this workflow manually from the Actions tab
|
|
workflow_dispatch:
|
|
|
|
concurrency:
|
|
group: e2e-${{ github.ref }}
|
|
cancel-in-progress: ${{ github.ref_name != 'main' }}
|
|
|
|
env:
|
|
DEBUG: 'hyperlane:*'
|
|
CARGO_TERM_COLOR: always
|
|
RUST_BACKTRACE: full
|
|
|
|
jobs:
|
|
yarn-install:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/setup-node@v3
|
|
with:
|
|
node-version: 18
|
|
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
ref: ${{ github.event.pull_request.head.sha || github.sha }}
|
|
submodules: recursive
|
|
|
|
- name: yarn-cache
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: |
|
|
**/node_modules
|
|
.yarn
|
|
key: ${{ runner.os }}-yarn-cache-${{ hashFiles('./yarn.lock') }}
|
|
|
|
- name: yarn-install
|
|
run: |
|
|
yarn install
|
|
CHANGES=$(git status -s --ignore-submodules)
|
|
if [[ ! -z $CHANGES ]]; then
|
|
echo "Changes found: $CHANGES"
|
|
git diff
|
|
exit 1
|
|
fi
|
|
|
|
yarn-build:
|
|
runs-on: ubuntu-latest
|
|
needs: [yarn-install]
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
ref: ${{ github.event.pull_request.head.sha || github.sha }}
|
|
submodules: recursive
|
|
fetch-depth: 0
|
|
|
|
- name: yarn-cache
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: |
|
|
**/node_modules
|
|
.yarn
|
|
key: ${{ runner.os }}-yarn-cache-${{ hashFiles('./yarn.lock') }}
|
|
|
|
- name: build-cache
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: |
|
|
./*
|
|
!./rust
|
|
key: ${{ github.event.pull_request.head.sha || github.sha }}
|
|
|
|
- name: build
|
|
run: yarn build
|
|
|
|
lint-prettier:
|
|
runs-on: ubuntu-latest
|
|
needs: [yarn-install]
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
ref: ${{ github.event.pull_request.head.sha || github.sha }}
|
|
# check out full history
|
|
fetch-depth: 0
|
|
|
|
- name: yarn-cache
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: |
|
|
**/node_modules
|
|
.yarn
|
|
key: ${{ runner.os }}-yarn-cache-${{ hashFiles('./yarn.lock') }}
|
|
|
|
- name: lint
|
|
run: yarn lint
|
|
|
|
- name: prettier
|
|
run: |
|
|
yarn prettier
|
|
CHANGES=$(git status -s)
|
|
if [[ ! -z $CHANGES ]]; then
|
|
echo "Changes found: $CHANGES"
|
|
exit 1
|
|
fi
|
|
|
|
yarn-test:
|
|
runs-on: ubuntu-latest
|
|
needs: [yarn-build]
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
ref: ${{ github.event.pull_request.head.sha || github.sha }}
|
|
submodules: recursive
|
|
fetch-depth: 0
|
|
|
|
- name: foundry-install
|
|
uses: onbjerg/foundry-toolchain@v1
|
|
|
|
- name: build-cache
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: |
|
|
./*
|
|
!./rust
|
|
key: ${{ github.event.pull_request.head.sha || github.sha }}
|
|
|
|
- name: Unit Tests
|
|
run: yarn test:ci
|
|
|
|
metadata-check:
|
|
runs-on: ubuntu-latest
|
|
needs: [yarn-build]
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
ref: ${{ github.event.pull_request.head.sha || github.sha }}
|
|
submodules: recursive
|
|
fetch-depth: 0
|
|
|
|
- name: yarn-cache
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: |
|
|
**/node_modules
|
|
.yarn
|
|
key: ${{ runner.os }}-yarn-cache-${{ hashFiles('./yarn.lock') }}
|
|
|
|
- name: build-cache
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: |
|
|
./*
|
|
!./rust
|
|
key: ${{ github.event.pull_request.head.sha || github.sha }}
|
|
|
|
- name: Metadata Health Check
|
|
run: DEBUG=hyperlane yarn workspace @hyperlane-xyz/sdk run test:metadata
|
|
|
|
e2e-matrix:
|
|
runs-on: larger-runner
|
|
needs: [yarn-build]
|
|
strategy:
|
|
matrix:
|
|
e2e-type: [cosmwasm, non-cosmwasm]
|
|
steps:
|
|
- uses: actions/setup-node@v3
|
|
with:
|
|
node-version: 18
|
|
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
ref: ${{ github.event.pull_request.head.sha || github.sha }}
|
|
submodules: recursive
|
|
|
|
- name: foundry-install
|
|
uses: onbjerg/foundry-toolchain@v1
|
|
|
|
- name: setup rust
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
toolchain: stable
|
|
profile: minimal
|
|
|
|
- name: Free disk space
|
|
run: |
|
|
# Based on https://github.com/actions/runner-images/issues/2840#issuecomment-790492173
|
|
sudo rm -rf /usr/share/dotnet
|
|
sudo rm -rf /opt/ghc
|
|
sudo rm -rf "/usr/local/share/boost"
|
|
sudo rm -rf "$AGENT_TOOLSDIRECTORY"
|
|
|
|
- name: Install mold linker
|
|
uses: rui314/setup-mold@v1
|
|
with:
|
|
mold-version: 2.0.0
|
|
make-default: true
|
|
|
|
- name: yarn-cache
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: |
|
|
**/node_modules
|
|
.yarn
|
|
key: ${{ runner.os }}-yarn-cache-${{ hashFiles('./yarn.lock') }}
|
|
|
|
- name: build-cache
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: |
|
|
./*
|
|
!./rust
|
|
key: ${{ github.event.pull_request.head.sha || github.sha }}
|
|
|
|
- name: cargo-cache
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: |
|
|
~/.cargo
|
|
key: ${{ runner.os }}-cargo-cache-${{ hashFiles('./rust/Cargo.lock') }}
|
|
|
|
- name: agent tests with CosmWasm
|
|
run: cargo test --release --package run-locally --bin run-locally --features cosmos -- cosmos::test --nocapture
|
|
if: matrix.e2e-type == 'cosmwasm'
|
|
working-directory: ./rust
|
|
env:
|
|
RUST_BACKTRACE: 1
|
|
|
|
- name: agent tests excluding CosmWasm
|
|
run: cargo run --release --bin run-locally
|
|
if: matrix.e2e-type == 'non-cosmwasm'
|
|
working-directory: ./rust
|
|
env:
|
|
E2E_CI_MODE: 'true'
|
|
E2E_CI_TIMEOUT_SEC: '600'
|
|
E2E_KATHY_MESSAGES: '20'
|
|
|
|
e2e:
|
|
runs-on: ubuntu-latest
|
|
needs: [e2e-matrix]
|
|
if: always() # This ensures that the job runs even if the e2e jobs fail
|
|
steps:
|
|
- name: Report Matrix Result
|
|
run: |
|
|
echo "All e2e-matrix jobs have completed."
|
|
# You can add additional commands here to report the result as needed
|
|
|
|
cli-e2e:
|
|
runs-on: larger-runner
|
|
needs: [yarn-build]
|
|
strategy:
|
|
matrix:
|
|
include:
|
|
- hook: preset_hook_enabled
|
|
- hook: configure_hook_enabled
|
|
steps:
|
|
- uses: actions/setup-node@v3
|
|
with:
|
|
node-version: 18
|
|
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
ref: ${{ github.event.pull_request.head.sha || github.sha }}
|
|
submodules: recursive
|
|
|
|
- name: foundry-install
|
|
uses: onbjerg/foundry-toolchain@v1
|
|
|
|
- name: setup rust
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
toolchain: stable
|
|
profile: minimal
|
|
|
|
- name: Free disk space
|
|
run: |
|
|
# Based on https://github.com/actions/runner-images/issues/2840#issuecomment-790492173
|
|
sudo rm -rf /usr/share/dotnet
|
|
sudo rm -rf /opt/ghc
|
|
sudo rm -rf "/usr/local/share/boost"
|
|
sudo rm -rf "$AGENT_TOOLSDIRECTORY"
|
|
|
|
- name: Install mold linker
|
|
uses: rui314/setup-mold@v1
|
|
with:
|
|
mold-version: 2.0.0
|
|
make-default: true
|
|
|
|
- name: yarn-cache
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: |
|
|
**/node_modules
|
|
.yarn
|
|
key: ${{ runner.os }}-yarn-cache-${{ hashFiles('./yarn.lock') }}
|
|
|
|
- name: build-cache
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: |
|
|
./*
|
|
!./rust
|
|
key: ${{ github.event.pull_request.head.sha || github.sha }}
|
|
|
|
- name: cargo-cache
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: |
|
|
~/.cargo
|
|
key: ${{ runner.os }}-cargo-cache-${{ hashFiles('./rust/Cargo.lock') }}
|
|
|
|
- name: cli e2e tests with preset hook config
|
|
run: ./typescript/cli/ci-test.sh false
|
|
if: matrix.hook == 'preset_hook_enabled'
|
|
|
|
- name: cli e2e tests with configured hook config
|
|
run: ./typescript/cli/ci-test.sh true
|
|
if: matrix.hook == 'configure_hook_enabled'
|
|
|
|
env-test:
|
|
runs-on: ubuntu-latest
|
|
needs: [yarn-build]
|
|
strategy:
|
|
matrix:
|
|
include:
|
|
- environment: testnet4
|
|
chain: sepolia
|
|
module: core
|
|
- environment: mainnet3
|
|
chain: arbitrum
|
|
module: core
|
|
- environment: mainnet3
|
|
chain: inevm
|
|
module: core
|
|
- environment: mainnet3
|
|
chain: viction
|
|
module: core
|
|
- environment: mainnet3
|
|
chain: ethereum
|
|
module: core
|
|
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
ref: ${{ github.event.pull_request.head.sha || github.sha }}
|
|
|
|
- name: foundry-install
|
|
uses: onbjerg/foundry-toolchain@v1
|
|
|
|
- name: build-cache
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: |
|
|
./*
|
|
!./rust
|
|
key: ${{ github.event.pull_request.head.sha || github.sha }}
|
|
|
|
- name: Fork test ${{ matrix.environment }} ${{ matrix.module }} ${{ matrix.chain }} deployment
|
|
run: cd typescript/infra && ./fork.sh ${{ matrix.environment }} ${{ matrix.module }} ${{ matrix.chain }}
|
|
|
|
coverage:
|
|
runs-on: ubuntu-latest
|
|
needs: [yarn-test]
|
|
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
ref: ${{ github.event.pull_request.head.sha || github.sha }}
|
|
fetch-depth: 0
|
|
|
|
- name: yarn-cache
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: |
|
|
**/node_modules
|
|
.yarn
|
|
key: ${{ runner.os }}-yarn-cache-${{ hashFiles('./yarn.lock') }}
|
|
|
|
- name: build-cache
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: |
|
|
./*
|
|
!./rust
|
|
key: ${{ github.event.pull_request.head.sha || github.sha }}
|
|
|
|
- name: foundry-install
|
|
uses: onbjerg/foundry-toolchain@v1
|
|
|
|
- name: Run tests with coverage
|
|
run: yarn coverage
|
|
env:
|
|
NODE_OPTIONS: --max_old_space_size=4096
|
|
|
|
- name: Upload coverage reports to Codecov with GitHub Action
|
|
uses: codecov/codecov-action@v3
|
|
with:
|
|
token: ${{ secrets.CODECOV_TOKEN }}
|
|
|