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.
487 lines
14 KiB
487 lines
14 KiB
name: test
|
|
|
|
on:
|
|
# Triggers the workflow on push or pull request against main
|
|
push:
|
|
branches: [main]
|
|
pull_request:
|
|
branches:
|
|
- '*' # run against all branches
|
|
# 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:
|
|
LOG_LEVEL: DEBUG
|
|
LOG_FORMAT: PRETTY
|
|
CARGO_TERM_COLOR: always
|
|
RUST_BACKTRACE: full
|
|
# Alongside the monorepo in the directory above the $GITHUB_WORKSPACE.
|
|
REGISTRY_URI: ${{ github.workspace }}/../hyperlane-registry
|
|
|
|
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
|
|
|
|
checkout-registry:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
with:
|
|
repository: hyperlane-xyz/hyperlane-registry
|
|
ref: main
|
|
path: ./hyperlane-registry
|
|
|
|
# Put alongside the monorepo in the directory above the $GITHUB_WORKSPACE.
|
|
# actions/checkout doesn't allow you to checkout a repository outside of the workspace.
|
|
# See https://github.com/actions/checkout/issues/197.
|
|
- run: mv ./hyperlane-registry ../
|
|
|
|
# A workaround for relative paths not being supported by actions/cache.
|
|
# See https://github.com/actions/upload-artifact/issues/176#issuecomment-1367855630.
|
|
- run: echo "REGISTRY_URI_ABSOLUTE=$(realpath $REGISTRY_URI)" >> $GITHUB_ENV
|
|
|
|
- name: registry-cache
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: |
|
|
${{ env.REGISTRY_URI_ABSOLUTE }}
|
|
key: hyperlane-registry-${{ github.event.pull_request.head.sha || github.sha }}
|
|
|
|
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, checkout-registry]
|
|
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 }}
|
|
|
|
# A workaround for relative paths not being supported by actions/cache.
|
|
# See https://github.com/actions/upload-artifact/issues/176#issuecomment-1367855630.
|
|
- run: echo "REGISTRY_URI_ABSOLUTE=$(realpath $REGISTRY_URI)" >> $GITHUB_ENV
|
|
|
|
- name: registry-cache
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: |
|
|
${{ env.REGISTRY_URI_ABSOLUTE }}
|
|
key: hyperlane-registry-${{ github.event.pull_request.head.sha || github.sha }}
|
|
|
|
- name: Unit Tests
|
|
run: yarn test:ci
|
|
|
|
agent-configs:
|
|
runs-on: ubuntu-latest
|
|
needs: [yarn-build, checkout-registry]
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
environment: [mainnet3, testnet4]
|
|
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 }}
|
|
|
|
# A workaround for relative paths not being supported by actions/cache.
|
|
# See https://github.com/actions/upload-artifact/issues/176#issuecomment-1367855630.
|
|
- run: echo "REGISTRY_URI_ABSOLUTE=$(realpath $REGISTRY_URI)" >> $GITHUB_ENV
|
|
|
|
- name: registry-cache
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: |
|
|
${{ env.REGISTRY_URI_ABSOLUTE }}
|
|
key: hyperlane-registry-${{ github.event.pull_request.head.sha || github.sha }}
|
|
|
|
- name: Generate ${{ matrix.environment }} agent config
|
|
run: |
|
|
cd typescript/infra
|
|
yarn tsx ./scripts/agents/update-agent-config.ts -e ${{ matrix.environment }}
|
|
CHANGES=$(git status -s)
|
|
if [[ ! -z $CHANGES ]]; then
|
|
echo "Changes found in agent config: $CHANGES"
|
|
exit 1
|
|
fi
|
|
|
|
e2e-matrix:
|
|
runs-on: larger-runner
|
|
if: github.event_name == 'push' || (github.event_name == 'pull_request' && github.base_ref == 'main')
|
|
needs: [yarn-build, checkout-registry]
|
|
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 }}
|
|
|
|
# A workaround for relative paths not being supported by actions/cache.
|
|
# See https://github.com/actions/upload-artifact/issues/176#issuecomment-1367855630.
|
|
- run: echo "REGISTRY_URI_ABSOLUTE=$(realpath $REGISTRY_URI)" >> $GITHUB_ENV
|
|
|
|
- name: registry-cache
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: |
|
|
${{ env.REGISTRY_URI_ABSOLUTE }}
|
|
key: hyperlane-registry-${{ 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: 'full'
|
|
|
|
- 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'
|
|
RUST_BACKTRACE: 'full'
|
|
|
|
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
|
|
if: github.event_name == 'push' || (github.event_name == 'pull_request' && github.base_ref == 'main')
|
|
needs: [yarn-build, checkout-registry]
|
|
strategy:
|
|
matrix:
|
|
include:
|
|
- test-type: preset_hook_enabled
|
|
- test-type: configure_hook_enabled
|
|
- test-type: pi_with_core_chain
|
|
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 }}
|
|
|
|
# A workaround for relative paths not being supported by actions/cache.
|
|
# See https://github.com/actions/upload-artifact/issues/176#issuecomment-1367855630.
|
|
- run: echo "REGISTRY_URI_ABSOLUTE=$(realpath $REGISTRY_URI)" >> $GITHUB_ENV
|
|
|
|
- name: registry-cache
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: |
|
|
${{ env.REGISTRY_URI_ABSOLUTE }}
|
|
key: hyperlane-registry-${{ 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
|
|
run: ./typescript/cli/ci-test.sh ${{ matrix.test-type }}
|
|
|
|
env-test:
|
|
runs-on: ubuntu-latest
|
|
needs: [yarn-build, checkout-registry]
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
environment: [mainnet3]
|
|
chain: [ethereum, arbitrum, optimism, inevm, viction]
|
|
module: [core, igp]
|
|
include:
|
|
- environment: testnet4
|
|
chain: sepolia
|
|
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 }}
|
|
|
|
# A workaround for relative paths not being supported by actions/cache.
|
|
# See https://github.com/actions/upload-artifact/issues/176#issuecomment-1367855630.
|
|
- run: echo "REGISTRY_URI_ABSOLUTE=$(realpath $REGISTRY_URI)" >> $GITHUB_ENV
|
|
|
|
- name: registry-cache
|
|
uses: actions/cache@v3
|
|
with:
|
|
path: |
|
|
${{ env.REGISTRY_URI_ABSOLUTE }}
|
|
key: hyperlane-registry-${{ 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 }}
|
|
|