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/solidity.yml

168 lines
5.0 KiB

name: Solidity
on:
# Triggers the workflow on push or pull request events but only for the main branch
push:
branches: [main]
pull_request:
branches: [main]
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
jobs:
install:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
# Save caches individually
- name: Core Cache
id: core-cache
uses: actions/cache@v2
with:
path: ./solidity/optics-core/node_modules
key: ${{ runner.os }}-core-cache-${{ hashFiles('solidity/optics-core/package-lock.json') }}
- name: XApps Cache
id: xapps-cache
uses: actions/cache@v2
with:
path: ./solidity/optics-xapps/node_modules
key: ${{ runner.os }}-xapps-cache-${{ hashFiles('solidity/optics-xapps/package-lock.json') }}
- name: Tests Cache
id: tests-cache
uses: actions/cache@v2
with:
path: ./typescript/optics-tests/node_modules
key: ${{ runner.os }}-tests-cache-${{ hashFiles('typescript/optics-tests/package-lock.json') }}
- name: Deploy Cache
id: deploy-cache
uses: actions/cache@v2
with:
path: ./typescript/optics-deploy/node_modules
key: ${{ runner.os }}-deploy-cache-${{ hashFiles('typescript/optics-deploy/package-lock.json') }}
- name: Typechain Cache
id: typechain-cache
uses: actions/cache@v2
with:
path: ./typescript/typechain/node_modules
key: ${{ runner.os }}-typechain-cache-${{ hashFiles('typescript/typechain/package-lock.json') }}
# Install separately depending on cache hit
- name: Install Core
if: steps.core-cache.outputs.cache-hit != 'true'
run: cd ./solidity/optics-core && npm i
- name: Install XApps
if: steps.xapps-cache.outputs.cache-hit != 'true'
run: cd ./solidity/optics-xapps && npm i
- name: Install Tests
if: steps.tests-cache.outputs.cache-hit != 'true'
run: cd ./typescript/optics-tests && npm i
- name: Install Deploy
if: steps.deploy-cache.outputs.cache-hit != 'true'
run: cd ./typescript/optics-deploy && npm i
- name: Install Typechain
if: steps.typechain-cache.outputs.cache-hit != 'true'
run: cd ./typescript/typechain && npm i
lint:
runs-on: ubuntu-latest
needs: [install]
steps:
- uses: actions/checkout@v2
# Get cache for Core and XApps
- name: Core Cache
id: core-cache
uses: actions/cache@v2
with:
path: ./solidity/optics-core/node_modules
key: ${{ runner.os }}-core-cache-${{ hashFiles('solidity/optics-core/package-lock.json') }}
- name: XApps Cache
id: xapps-cache
uses: actions/cache@v2
with:
path: ./solidity/optics-xapps/node_modules
key: ${{ runner.os }}-xapps-cache-${{ hashFiles('solidity/optics-xapps/package-lock.json') }}
# Lint
- name: Lint
run: |
cd ./solidity/optics-core
npm run lint
cd ../optics-xapps
npm run lint
test:
env:
ETHERSCAN_API_KEY: ""
runs-on: ubuntu-latest
needs: [install]
steps:
- uses: actions/checkout@v2
# Get caches
- name: Core Cache
id: core-cache
uses: actions/cache@v2
with:
path: ./solidity/optics-core/node_modules
key: ${{ runner.os }}-core-cache-${{ hashFiles('solidity/optics-core/package-lock.json') }}
- name: XApps Cache
id: xapps-cache
uses: actions/cache@v2
with:
path: ./solidity/optics-xapps/node_modules
key: ${{ runner.os }}-xapps-cache-${{ hashFiles('solidity/optics-xapps/package-lock.json') }}
- name: Tests Cache
id: tests-cache
uses: actions/cache@v2
with:
path: ./typescript/optics-tests/node_modules
key: ${{ runner.os }}-tests-cache-${{ hashFiles('typescript/optics-tests/package-lock.json') }}
- name: Deploy Cache
id: deploy-cache
uses: actions/cache@v2
with:
path: ./typescript/optics-deploy/node_modules
key: ${{ runner.os }}-deploy-cache-${{ hashFiles('typescript/optics-deploy/package-lock.json') }}
- name: Typechain Cache
id: typechain-cache
uses: actions/cache@v2
with:
path: ./typescript/typechain/node_modules
key: ${{ runner.os }}-typechain-cache-${{ hashFiles('typescript/typechain/package-lock.json') }}
# Test
- name: Test
run: ./scripts/test-solidity.sh
complete:
runs-on: ubuntu-latest
needs: [install, lint, test]
steps:
- name: Solidity tests successful
if: success()
uses: peter-evans/repository-dispatch@v1
with:
token: ${{ secrets.ACTIONS_PAT }}
repository: ${{ github.repository }}
event-type: solidity-tests-successful