Skip to content

Commit

Permalink
Celo deployment (#24)
Browse files Browse the repository at this point in the history
* feat: celo router deployment

* feat updating lint

* feat: deploy base router

* feat: add mint functionality

* fix: lint

* fix: tests for the setup

* fix: failing tests

* fix: tests

* fix: tests
  • Loading branch information
sogipec authored May 10, 2024
1 parent 0cccd23 commit 46a3b57
Show file tree
Hide file tree
Showing 46 changed files with 4,005 additions and 1,170 deletions.
35 changes: 35 additions & 0 deletions .github/actions/setup-repo/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
name: Setup repo
description: Runs all steps to setup the repo (install node_modules, build, etc...)
inputs:
registry-token:
description: 'PAT to access registries'
runs:
using: 'composite'
steps:
- name: Get yarn cache directory path
id: yarn-cache-dir-path
shell: bash
run: |
echo "::set-output name=dir::$(yarn cache dir)"
echo "::set-output name=version::$(yarn -v)"
- uses: actions/setup-node@v3
with:
node-version: '20'

- uses: actions/cache@v2
id: yarn-cache
with:
path: |
**/node_modules
${{ steps.yarn-cache-dir-path.outputs.dir }}
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: Install dependencies
shell: bash
run: echo "//npm.pkg.github.com/:_authToken=$GH_REGISTRY_ACCESS_TOKEN" >> .npmrc && yarn install --frozen-lockfile --verbose && rm -f .npmrc
env:
GH_REGISTRY_ACCESS_TOKEN: ${{ inputs.registry-token }}
183 changes: 118 additions & 65 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,105 +1,158 @@
name: CI
name: 'CI'

on:
push:
branches:
- main
workflow_dispatch:
inputs:
workflow_to_run:
type: choice
description: Which workflow to run?
required: true
options:
- all
- hardhat-tests
- foundry-tests
pull_request:
types:
- ready_for_review
- review_requested
pull_request_review:
types: [submitted]

defaults:
run:
shell: bash
push:
branches:
- 'main'

jobs:
run-linters:
if: github.ref == 'refs/heads/main' || github.event.review.state == 'approved' || github.event.action == 'ready_for_review' || github.event.action == 'review_requested'
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
- uses: actions/checkout@v3

- uses: actions/setup-node@v3
with:
node-version: 14
- uses: actions/cache@v2
node-version: 18
cache: 'yarn'

- name: Setup repo
uses: ./.github/actions/setup-repo
with:
path: node_modules
key: yarn-${{ hashFiles('yarn.lock') }}
restore-keys: yarn-
registry-token: ${{ secrets.GH_REGISTRY_ACCESS_TOKEN }}

- name: Install dependencies
run: |
npm config set //registry.npmjs.org/
yarn install --frozen-lockfile
run: yarn install

- name: Run solhint
run: yarn lint:sol
- name: Run eslint
run: yarn lint:js:fix
run: yarn lint:check

hardhat-tests:
if: github.ref == 'refs/heads/main' || github.event.inputs.workflow_to_run == 'all' || github.event.inputs.workflow_to_run == 'hardhat-tests' || github.event.review.state == 'approved' || github.event.action == 'ready_for_review' || github.event.action == 'review_requested'
- name: 'Add lint summary'
run: |
echo "## Lint result" >> $GITHUB_STEP_SUMMARY
echo "✅ Passed" >> $GITHUB_STEP_SUMMARY
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
- uses: actions/checkout@v3
with:
submodules: 'recursive'

- uses: actions/setup-node@v3
with:
node-version: 14
- uses: actions/cache@v2
node-version: 18
cache: 'yarn'

- name: Setup repo
uses: ./.github/actions/setup-repo
with:
path: node_modules
key: yarn-${{ hashFiles('yarn.lock') }}
restore-keys: yarn-
registry-token: ${{ secrets.GH_REGISTRY_ACCESS_TOKEN }}

- name: Install dependencies
run: |
npm config set //registry.npmjs.org/
yarn install --frozen-lockfile
- name: Compile
run: yarn install --frozen-lockfile

- name: Compile hardhat
run: yarn hardhat:compile

- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1
with:
version: nightly

- name: Compile foundry
run: yarn foundry:compile --sizes

- name: 'Cache the build so that it can be re-used by the other jobs'
uses: 'actions/cache/save@v3'
with:
key: 'build-${{ github.sha }}'
path: |
cache-forge
out
cache-hh
artifacts
typechain
node_modules
- name: 'Add build summary'
run: |
echo "## Build result" >> $GITHUB_STEP_SUMMARY
echo "✅ Passed" >> $GITHUB_STEP_SUMMARY
hardhat-tests:
needs: ['build', 'lint']
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3

- uses: actions/setup-node@v3
with:
node-version: 18
cache: 'yarn'

- name: 'Restore the cached build'
uses: 'actions/cache/restore@v3'
with:
fail-on-cache-miss: true
key: 'build-${{ github.sha }}'
path: |
cache-forge
out
cache-hh
artifacts
typechain
node_modules
- run: export NODE_OPTIONS=--max_old_space_size=11264
- name: Run unit tests
run: yarn hardhat:test
env:
ENABLE_GAS_REPORT: true
CI: true
ETH_NODE_URI_FORKPOLYGON: ${{secrets.ETH_NODE_URI_FORKPOLYGON}}
ETH_NODE_URI_OPTIMISM: ${{secrets.ETH_NODE_URI_OPTIMISM}}
ETH_NODE_URI_AVALANCHE: ${{secrets.ETH_NODE_URI_AVALANCHE}}
ETH_NODE_URI_ARBITRUM: ${{secrets.ETH_NODE_URI_ARBITRUM}}
ETH_NODE_URI_MAINNET: ${{secrets.ETH_NODE_URI_MAINNET}}
ETH_NODE_URI_POLYGON: ${{ secrets.ETH_NODE_URI_POLYGON }}
ETH_NODE_URI_FORK: ${{ secrets.ETH_NODE_URI_FORK }}
ETH_NODE_URI_MAINNET: ${{ secrets.ETH_NODE_URI_MAINNET }}

- name: 'Add test summary'
run: |
echo "## Hardhat Unit tests result" >> $GITHUB_STEP_SUMMARY
echo "✅ Passed" >> $GITHUB_STEP_SUMMARY
foundry-tests:
if: github.ref == 'refs/heads/main' || github.event.inputs.workflow_to_run == 'all' || github.event.inputs.workflow_to_run == 'foundry-tests' || github.event.review.state == 'approved' || github.event.action == 'ready_for_review' || github.event.action == 'review_requested'
needs: ['build', 'lint']
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2

- uses: actions/setup-node@v2
with:
node-version: 14
- uses: actions/cache@v2
with:
path: node_modules
key: yarn-${{ hashFiles('yarn.lock') }}
restore-keys: yarn-
- run: yarn install --frozen-lockfile
submodules: 'recursive'

- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1
with:
version: nightly

- name: 'Restore the cached build'
uses: 'actions/cache/restore@v3'
with:
fail-on-cache-miss: true
key: 'build-${{ github.sha }}'
path: |
cache-forge
out
cache-hh
artifacts
typechain
node_modules
- name: Run Foundry tests
run: yarn foundry:test
env:
ETH_NODE_URI_MAINNET: ${{ secrets.ETH_NODE_URI_MAINNET }}
ETH_NODE_URI_POLYGON: ${{ secrets.ETH_NODE_URI_POLYGON }}
ETH_NODE_URI_GOERLI: ${{ secrets.ETH_NODE_URI_GOERLI }}
ETH_NODE_URI_FANTOM: ${{ secrets.ETH_NODE_URI_FANTOM }}
FOUNDRY_FUZZ_RUNS: '5000'

- name: 'Add test summary'
run: |
echo "## Foundry Unit tests result" >> $GITHUB_STEP_SUMMARY
echo "✅ Passed" >> $GITHUB_STEP_SUMMARY
1 change: 1 addition & 0 deletions .npmrc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
@angleprotocol:registry=https://npm.pkg.github.com
8 changes: 8 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
lib
artifacts
node_modules
cache-forge
cache-hh
export
out
typechain
3 changes: 1 addition & 2 deletions .prettierrc
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,7 @@
"options": {
"printWidth": 120,
"singleQuote": false,
"bracketSpacing": true,
"explicitTypes": "always"
"bracketSpacing": true
}
}
]
Expand Down
19 changes: 16 additions & 3 deletions .solhint.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,27 @@
"extends": "solhint:recommended",
"plugins": ["prettier"],
"rules": {
"prettier/prettier": "warning",
"avoid-call-value": "warn",
"avoid-low-level-calls": "off",
"avoid-tx-origin": "warn",
"const-name-snakecase": "warn",
"contract-name-camelcase": "warn",
"imports-on-top": "warn",
"prettier/prettier": "off",
"ordering": "off",
"max-states-count": "off",
"mark-callable-contracts": "off",
"no-empty-blocks": "off",
"no-global-import": "off",
"not-rely-on-time": "off",
"compiler-version": "off",
"private-vars-leading-underscore": "error",
"explicit-types": ["error", "explicit"],
"private-vars-leading-underscore": "warn",
"reentrancy": "warn",
"no-inline-assembly": "off",
"no-complex-fallback": "off",
"reason-string": "off",
"func-visibility": ["error", { "ignoreConstructors": true }]
"func-visibility": ["warn", { "ignoreConstructors": true }],
"custom-errors": "off"
}
}
21 changes: 20 additions & 1 deletion .solhintignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,21 @@
contracts/interfaces/external/**/*.sol
contracts/mock/*.sol
contracts/mock/*.sol

# Doesn't need to lint dev files
lib
scripts
test
mock
deprecated

# Doesn't need to lint build files
artifacts
node_modules
cache-forge
cache-hh
export
out
typechain

# Doesn't need to lint utils files
external
Loading

0 comments on commit 46a3b57

Please sign in to comment.