The home for Hyperlane core contracts, sdk packages, and other infrastructure
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.
hyperlane-monorepo/.github/workflows/node.yml

234 lines
5.8 KiB

name: node
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:
jobs:
yarn-install:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- name: remove submodule locks
run: git submodule foreach rm yarn.lock
- name: yarn-cache
uses: actions/cache@v3
with:
path: |
**/node_modules
.yarn/cache
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:
submodules: recursive
- name: remove submodule locks
run: git submodule foreach rm yarn.lock
- name: yarn-cache
uses: actions/cache@v3
with:
path: |
**/node_modules
.yarn/cache
key: ${{ runner.os }}-yarn-cache-${{ hashFiles('./yarn.lock') }}
- name: build-cache
uses: actions/cache@v3
with:
path: ./*
key: ${{ github.sha }}
- name: build
run: yarn build
lint-prettier:
runs-on: ubuntu-latest
needs: [yarn-install]
steps:
- uses: actions/checkout@v3
- uses: actions/cache@v3
with:
path: |
**/node_modules
.yarn/cache
key: ${{ runner.os }}-yarn-cache-${{ hashFiles('./yarn.lock') }}
- name: lint-ts
run: yarn lint-ts
- name: prettier
run: |
yarn prettier
CHANGES=$(git status -s)
if [[ ! -z $CHANGES ]]; then
echo "Changes found: $CHANGES"
exit 1
fi
test-ts:
runs-on: ubuntu-latest
needs: [yarn-build]
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- uses: actions/cache@v3
with:
path: ./*
key: ${{ github.sha }}
- name: sdk
run: yarn workspace @hyperlane-xyz/sdk run test
- name: infra
run: yarn workspace @hyperlane-xyz/infra run test
test-env:
runs-on: ubuntu-latest
needs: [yarn-build]
Refactor IGP related code out of HyperlaneCore (#1907) ### Description A number of changes intended to make the SDK more easily consumed by hyperlane-deploy - Splits the IGP related code out of HyperlaneCore* into HyperlaneIgp* - Moves agent config building from infra to SDK so that it can be accessed by hyperlane-deploy - Modifies CoreConfig to specify a ChainMap<MultisigIsmConfig> (i.e. specify everything that you need to know to deploy to a chain in that chain's CoreConfig) - Removes core.extendWithConnectionClientConfig - Moves common logic into HyperlaneAppGovernor to be shared between HyperlaneCoreGovernor and HyperlaneIgpGovernor - Adds TestRecipient contract addresses to the SDK addresses for consumption by hyperlane-deploy - Allow buildContracts to build when address keys are a superset of factory keys (via filterContracts). This is useful as it allows us to just throw all the addresses at a HyperlaneApp constructor without needing to remove the ones that aren't relevant - Removes InterchainGasCalculator, the logic we want to keep now lives in HyperlaneIgp - Allows chains to be added to a MultiProvider ### Drive-by changes - Merges the infra govern script into the check script (to dedupe) - Some minor renaming where "Core" was being used liberally - Default to using whatever is configured in `owners.ts` in the router configs for infra (for ICA, IQS, HelloWorld, and LL deployment) ### Related issues - Fixes #[issue number here] ### Backward compatibility _Are these changes backward compatible?_ No, existing consumers of the SDK may need to adjust. _Are there any infrastructure implications, e.g. changes that would prohibit deploying older commits using this infra tooling?_ None ### Testing _What kind of testing have these changes undergone?_ Manual / Unit Tests
2 years ago
strategy:
matrix:
environment: [testnet3, mainnet2]
module: [core, igp]
steps:
- uses: actions/checkout@v3
- uses: actions/cache@v3
with:
path: ./*
key: ${{ github.sha }}
- name: Install Foundry
uses: onbjerg/foundry-toolchain@v1
Refactor IGP related code out of HyperlaneCore (#1907) ### Description A number of changes intended to make the SDK more easily consumed by hyperlane-deploy - Splits the IGP related code out of HyperlaneCore* into HyperlaneIgp* - Moves agent config building from infra to SDK so that it can be accessed by hyperlane-deploy - Modifies CoreConfig to specify a ChainMap<MultisigIsmConfig> (i.e. specify everything that you need to know to deploy to a chain in that chain's CoreConfig) - Removes core.extendWithConnectionClientConfig - Moves common logic into HyperlaneAppGovernor to be shared between HyperlaneCoreGovernor and HyperlaneIgpGovernor - Adds TestRecipient contract addresses to the SDK addresses for consumption by hyperlane-deploy - Allow buildContracts to build when address keys are a superset of factory keys (via filterContracts). This is useful as it allows us to just throw all the addresses at a HyperlaneApp constructor without needing to remove the ones that aren't relevant - Removes InterchainGasCalculator, the logic we want to keep now lives in HyperlaneIgp - Allows chains to be added to a MultiProvider ### Drive-by changes - Merges the infra govern script into the check script (to dedupe) - Some minor renaming where "Core" was being used liberally - Default to using whatever is configured in `owners.ts` in the router configs for infra (for ICA, IQS, HelloWorld, and LL deployment) ### Related issues - Fixes #[issue number here] ### Backward compatibility _Are these changes backward compatible?_ No, existing consumers of the SDK may need to adjust. _Are there any infrastructure implications, e.g. changes that would prohibit deploying older commits using this infra tooling?_ None ### Testing _What kind of testing have these changes undergone?_ Manual / Unit Tests
2 years ago
- name: Test ${{ matrix.environment }} ${{ matrix.module }} deployment (check, deploy, govern, check again)
run: cd typescript/infra && ./fork.sh ${{ matrix.environment }} ${{ matrix.module }}
test-sol:
env:
ETHERSCAN_API_KEY: ''
runs-on: ubuntu-latest
needs: [yarn-build]
steps:
- uses: actions/checkout@v3
- uses: actions/cache@v3
with:
path: ./*
key: ${{ github.sha }}
- name: yarn-cache
uses: actions/cache@v3
with:
path: |
**/node_modules
.yarn/cache
key: ${{ runner.os }}-yarn-cache-${{ hashFiles('./yarn.lock') }}
- name: Install Foundry
uses: onbjerg/foundry-toolchain@v1
- name: Install dependencies
run: cd solidity && forge install
- name: Forge build
run: cd solidity && forge build --build-info
- name: lint
run: yarn workspace @hyperlane-xyz/core run lint
- name: Run Slither
uses: crytic/slither-action@main
id: slither
with:
target: 'solidity/'
slither-config: 'solidity/slither.config.json'
sarif: results.sarif
fail-on: none
ignore-compile: true
- name: Upload SARIF file
uses: github/codeql-action/upload-sarif@v2
with:
sarif_file: ${{ steps.slither.outputs.sarif }}
#- name: gas
# run: yarn workspace @hyperlane-xyz/core run gas-ci
- name: forge-test
run: yarn workspace @hyperlane-xyz/core run test:forge
# Will fail if hardhat tests fail but not if forge tests fail
- name: coverage
run: |
sudo apt-get install lcov
yarn workspace @hyperlane-xyz/core run coverage
- name: coverage-cache
uses: actions/cache@v3
with:
path: './solidity/lcov.info'
key: ${{ github.sha }}
coverage-sol:
if: github.event_name == 'pull_request'
runs-on: ubuntu-latest
needs: [test-sol]
steps:
- uses: actions/checkout@v3
- uses: actions/cache@v3
with:
path: ./*
key: ${{ github.sha }}
- name: base-coverage-cache
uses: actions/cache@v3
with:
path: './solidity/lcov.info'
key: ${{ github.event.pull_request.base.sha }}
- name: persist-base-coverage
run: mv ./solidity/lcov.info ./solidity/lcov.base.info
- name: ref-coverage-cache
uses: actions/cache@v3
with:
path: './solidity/lcov.info'
key: ${{ github.sha }}
- name: check-coverage
run: |
sudo apt-get install lcov
cd ./solidity
export BASE=$(lcov --summary ./lcov.base.info | grep "lines" | sed 's/.*lines......:\ //' | sed 's/% (.*//')
export REF=$(lcov --summary ./lcov.info | grep "lines" | sed 's/.*lines......:\ //' | sed 's/% (.*//')
if [[ $REF < $BASE ]]; then exit 1; fi