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 - uses: actions/cache@v3 with: path: '**/node_modules' key: ${{ runner.os }}-yarn-cache4-${{ hashFiles('./yarn.lock') }} - name: yarn-install # Check out the lockfile from main, reinstall, and then # verify the lockfile matches what was committed. 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' key: ${{ runner.os }}-yarn-cache4-${{ 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' key: ${{ runner.os }}-yarn-cache4-${{ 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-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: Install Foundry uses: onbjerg/foundry-toolchain@v1 with: version: nightly - name: Install dependencies run: cd solidity && forge install - name: core run: yarn workspace @hyperlane-xyz/core run test - name: gas run: yarn workspace @hyperlane-xyz/core run gas-ci - name: coverage run: yarn workspace @hyperlane-xyz/core run coverage-ci - uses: osmind-development-org/lcov-reporter-action@v0.3.2 with: title: "Forge Coverage Report" lcov-file: ./solidity/lcov.info lcov-base: ./solidity/forge-lcov.base.info delete-old-comments: true - uses: osmind-development-org/lcov-reporter-action@v0.3.2 with: title: "Hardhat Coverage Report" lcov-file: ./solidity/coverage/lcov.info lcov-base: ./solidity/hardhat-lcov.base.info delete-old-comments: true