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.
479 lines
13 KiB
479 lines
13 KiB
name: test
|
|
|
|
on:
|
|
# Triggers the workflow on pushes to main branch
|
|
push:
|
|
branches: [main]
|
|
paths-ignore:
|
|
- '*.md'
|
|
# Triggers on pull requests ignoring md files
|
|
pull_request:
|
|
branches:
|
|
- '*' # run against all branches
|
|
paths-ignore:
|
|
- '*.md'
|
|
# Support for merge queues
|
|
merge_group:
|
|
# 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
|
|
|
|
jobs:
|
|
yarn-install:
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/setup-node@v4
|
|
with:
|
|
node-version: 18
|
|
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
ref: ${{ github.event.pull_request.head.sha || github.sha }}
|
|
submodules: recursive
|
|
|
|
- name: yarn-cache
|
|
uses: actions/cache@v4
|
|
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@v4
|
|
with:
|
|
ref: ${{ github.event.pull_request.head.sha || github.sha }}
|
|
submodules: recursive
|
|
fetch-depth: 0
|
|
|
|
- name: yarn-cache
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: |
|
|
**/node_modules
|
|
.yarn
|
|
key: ${{ runner.os }}-yarn-cache-${{ hashFiles('./yarn.lock') }}
|
|
|
|
- name: build-cache
|
|
uses: actions/cache@v4
|
|
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@v4
|
|
with:
|
|
ref: ${{ github.event.pull_request.head.sha || github.sha }}
|
|
# check out full history
|
|
fetch-depth: 0
|
|
|
|
- name: yarn-cache
|
|
uses: actions/cache@v4
|
|
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@v4
|
|
with:
|
|
ref: ${{ github.event.pull_request.head.sha || github.sha }}
|
|
submodules: recursive
|
|
fetch-depth: 0
|
|
|
|
- name: foundry-install
|
|
uses: foundry-rs/foundry-toolchain@v1
|
|
|
|
- name: build-cache
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: |
|
|
./*
|
|
!./rust
|
|
key: ${{ github.event.pull_request.head.sha || github.sha }}
|
|
|
|
- name: Checkout registry
|
|
uses: ./.github/actions/checkout-registry
|
|
|
|
- name: Unit Tests
|
|
run: yarn test:ci
|
|
|
|
agent-configs:
|
|
runs-on: ubuntu-latest
|
|
needs: [yarn-build]
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
environment: [mainnet3, testnet4]
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
ref: ${{ github.event.pull_request.head.sha || github.sha }}
|
|
fetch-depth: 0
|
|
|
|
- name: yarn-cache
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: |
|
|
**/node_modules
|
|
.yarn
|
|
key: ${{ runner.os }}-yarn-cache-${{ hashFiles('./yarn.lock') }}
|
|
|
|
- name: build-cache
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: |
|
|
./*
|
|
!./rust
|
|
key: ${{ github.event.pull_request.head.sha || github.sha }}
|
|
|
|
- name: Checkout registry
|
|
uses: ./.github/actions/checkout-registry
|
|
|
|
- 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' || github.base_ref == 'cli-2.0') || github.event_name == 'merge_group'
|
|
needs: [yarn-build]
|
|
strategy:
|
|
matrix:
|
|
e2e-type: [cosmwasm, non-cosmwasm]
|
|
steps:
|
|
- uses: actions/setup-node@v4
|
|
with:
|
|
node-version: 18
|
|
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
ref: ${{ github.event.pull_request.head.sha || github.sha }}
|
|
submodules: recursive
|
|
|
|
- name: foundry-install
|
|
uses: foundry-rs/foundry-toolchain@v1
|
|
|
|
- name: setup rust
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
toolchain: stable
|
|
profile: minimal
|
|
|
|
- name: rust cache
|
|
uses: Swatinem/rust-cache@v2
|
|
with:
|
|
prefix-key: "v1-${{ runner.os }}-rust-cache"
|
|
shared-key: ${{ matrix.e2e-type }}
|
|
workspaces: |
|
|
./rust
|
|
|
|
- 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@v4
|
|
with:
|
|
path: |
|
|
**/node_modules
|
|
.yarn
|
|
key: ${{ runner.os }}-yarn-cache-${{ hashFiles('./yarn.lock') }}
|
|
|
|
- name: build-cache
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: |
|
|
./*
|
|
!./rust
|
|
key: ${{ github.event.pull_request.head.sha || github.sha }}
|
|
|
|
- name: Checkout registry
|
|
uses: ./.github/actions/checkout-registry
|
|
|
|
- name: agent tests (CosmWasm)
|
|
run: cargo test --release --package run-locally --bin run-locally --features cosmos test-utils -- cosmos::test --nocapture
|
|
if: matrix.e2e-type == 'cosmwasm'
|
|
working-directory: ./rust
|
|
env:
|
|
RUST_BACKTRACE: 'full'
|
|
|
|
- name: agent tests (EVM and Sealevel)
|
|
run: cargo run --release --bin run-locally --features test-utils
|
|
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
|
|
|
|
prebuild-cli-e2e:
|
|
runs-on: larger-runner
|
|
if: github.event_name == 'push' || (github.event_name == 'pull_request' && github.base_ref == 'main' || github.base_ref == 'cli-2.0') || github.event_name == 'merge_group'
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
ref: ${{ github.event.pull_request.head.sha || github.sha }}
|
|
submodules: recursive
|
|
|
|
- name: setup rust
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
toolchain: stable
|
|
profile: minimal
|
|
|
|
- name: rust cache
|
|
uses: Swatinem/rust-cache@v2
|
|
with:
|
|
prefix-key: "v1-${{ runner.os }}-rust-cache"
|
|
shared-key: "cli-e2e"
|
|
workspaces: |
|
|
./rust
|
|
|
|
- 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: Build validator
|
|
run: cargo build --bin validator --features test-utils
|
|
working-directory: ./rust
|
|
env:
|
|
RUST_BACKTRACE: 'full'
|
|
|
|
- name: Build relayer
|
|
run: cargo build --bin relayer --features test-utils
|
|
working-directory: ./rust
|
|
env:
|
|
RUST_BACKTRACE: 'full'
|
|
|
|
cli-advanced-e2e:
|
|
runs-on: larger-runner
|
|
if: github.event_name == 'push' || (github.event_name == 'pull_request' && github.base_ref == 'main' || github.base_ref == 'cli-2.0') || github.event_name == 'merge_group'
|
|
needs: [yarn-build, prebuild-cli-e2e]
|
|
strategy:
|
|
matrix:
|
|
include:
|
|
- test-type: preset_hook_enabled
|
|
- test-type: configure_hook_enabled
|
|
- test-type: pi_with_core_chain
|
|
steps:
|
|
- uses: actions/setup-node@v4
|
|
with:
|
|
node-version: 18
|
|
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
ref: ${{ github.event.pull_request.head.sha || github.sha }}
|
|
submodules: recursive
|
|
|
|
- name: foundry-install
|
|
uses: foundry-rs/foundry-toolchain@v1
|
|
|
|
- name: setup rust
|
|
uses: actions-rs/toolchain@v1
|
|
with:
|
|
toolchain: stable
|
|
profile: minimal
|
|
|
|
- name: rust cache
|
|
uses: Swatinem/rust-cache@v2
|
|
with:
|
|
prefix-key: "v1-${{ runner.os }}-rust-cache"
|
|
shared-key: "cli-e2e"
|
|
workspaces: |
|
|
./rust
|
|
|
|
- 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@v4
|
|
with:
|
|
path: |
|
|
**/node_modules
|
|
.yarn
|
|
key: ${{ runner.os }}-yarn-cache-${{ hashFiles('./yarn.lock') }}
|
|
|
|
- name: build-cache
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: |
|
|
./*
|
|
!./rust
|
|
key: ${{ github.event.pull_request.head.sha || github.sha }}
|
|
|
|
- name: Checkout registry
|
|
uses: ./.github/actions/checkout-registry
|
|
|
|
- name: cli e2e tests
|
|
run: ./typescript/cli/ci-advanced-test.sh ${{ matrix.test-type }}
|
|
|
|
env-test:
|
|
runs-on: ubuntu-latest
|
|
timeout-minutes: 3
|
|
needs: [yarn-build]
|
|
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@v4
|
|
with:
|
|
ref: ${{ github.event.pull_request.head.sha || github.sha }}
|
|
|
|
- name: foundry-install
|
|
uses: foundry-rs/foundry-toolchain@v1
|
|
|
|
- name: build-cache
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: |
|
|
./*
|
|
!./rust
|
|
key: ${{ github.event.pull_request.head.sha || github.sha }}
|
|
|
|
- name: Checkout registry
|
|
uses: ./.github/actions/checkout-registry
|
|
|
|
- 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@v4
|
|
with:
|
|
ref: ${{ github.event.pull_request.head.sha || github.sha }}
|
|
fetch-depth: 0
|
|
|
|
- name: yarn-cache
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: |
|
|
**/node_modules
|
|
.yarn
|
|
key: ${{ runner.os }}-yarn-cache-${{ hashFiles('./yarn.lock') }}
|
|
|
|
- name: build-cache
|
|
uses: actions/cache@v4
|
|
with:
|
|
path: |
|
|
./*
|
|
!./rust
|
|
key: ${{ github.event.pull_request.head.sha || github.sha }}
|
|
|
|
- name: foundry-install
|
|
uses: foundry-rs/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@v4
|
|
with:
|
|
token: ${{ secrets.CODECOV_TOKEN }}
|
|
|