Yield Delegation / Rebasing Token Rewrite #3320
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: DeFi | |
on: | |
pull_request: | |
types: [opened, reopened, synchronize] | |
push: | |
branches: | |
- 'master' | |
- 'staging' | |
- 'stable' | |
workflow_dispatch: | |
concurrency: | |
cancel-in-progress: true | |
group: ${{ github.ref_name }} | |
jobs: | |
contracts-lint: | |
name: "Contracts Linter" | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Use Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: "20.x" | |
cache: "yarn" | |
cache-dependency-path: contracts/yarn.lock | |
- run: yarn install --frozen-lockfile | |
working-directory: ./contracts | |
# this will compile and output the contract sizes | |
- run: npx hardhat compile | |
env: | |
CONTRACT_SIZE: true | |
working-directory: ./contracts | |
- run: yarn run lint | |
working-directory: ./contracts | |
- run: yarn prettier:check | |
working-directory: ./contracts | |
contracts-test: | |
name: "Contracts Unit Tests" | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Use Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: "20.x" | |
cache: "yarn" | |
cache-dependency-path: contracts/yarn.lock | |
- run: yarn install --frozen-lockfile | |
working-directory: ./contracts | |
# this will run the unit tests and report the gas usage | |
- name: Run Unit Tests | |
env: | |
REPORT_GAS: true | |
run: yarn run test | |
working-directory: ./contracts | |
contracts-unit-coverage: | |
name: "Contracts Unit Coverage" | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Use Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: "20.x" | |
cache: "yarn" | |
cache-dependency-path: contracts/yarn.lock | |
- run: yarn install --frozen-lockfile | |
working-directory: ./contracts | |
- name: Run Unit Coverage | |
run: yarn run test:coverage | |
working-directory: ./contracts | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: unit-test-coverage-${{ github.sha }} | |
path: | | |
./contracts/coverage.json | |
./contracts/coverage/**/* | |
retention-days: 1 | |
contracts-base-test: | |
name: "Contracts Unit Tests (Base)" | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Use Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: "20.x" | |
cache: "yarn" | |
cache-dependency-path: contracts/yarn.lock | |
- run: yarn install --frozen-lockfile | |
working-directory: ./contracts | |
# this will run the unit tests and report the gas usage | |
- name: Run Unit Tests | |
env: | |
REPORT_GAS: true | |
UNIT_TESTS_NETWORK: base | |
run: yarn run test:coverage:base | |
working-directory: ./contracts | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: base-unit-test-coverage-${{ github.sha }} | |
path: | | |
./contracts/coverage.json | |
./contracts/coverage/**/* | |
retention-days: 1 | |
contracts-forktest: | |
name: "Contracts Fork Tests ${{ matrix.chunk_id }}" | |
runs-on: ubuntu-latest | |
strategy: | |
matrix: | |
chunk_id: [0,1,2,3] | |
continue-on-error: true | |
env: | |
HARDHAT_CACHE_DIR: ./cache | |
PROVIDER_URL: ${{ secrets.PROVIDER_URL }} | |
ONEINCH_API_KEY: ${{ secrets.ONEINCH_API_KEY }} | |
CHUNK_ID: "${{matrix.chunk_id}}" | |
MAX_CHUNKS: "4" | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Use Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: "20.x" | |
cache: "yarn" | |
cache-dependency-path: contracts/yarn.lock | |
- uses: actions/cache@v4 | |
id: hardhat-cache | |
with: | |
path: contracts/cache | |
key: ${{ runner.os }}-hardhat-${{ hashFiles('contracts/cache/*.json') }} | |
restore-keys: | | |
${{ runner.os }}-hardhat-cache | |
- run: yarn install --frozen-lockfile | |
working-directory: ./contracts | |
- run: yarn run test:coverage:fork | |
working-directory: ./contracts | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: fork-test-coverage-${{ github.sha }}-runner${{ matrix.chunk_id }} | |
path: | | |
./contracts/coverage.json | |
./contracts/coverage/**/* | |
retention-days: 1 | |
contracts-arb-forktest: | |
name: "Arbitrum Fork Tests" | |
runs-on: ubuntu-latest | |
continue-on-error: true | |
env: | |
HARDHAT_CACHE_DIR: ./cache | |
PROVIDER_URL: ${{ secrets.PROVIDER_URL }} | |
ARBITRUM_PROVIDER_URL: ${{ secrets.ARBITRUM_PROVIDER_URL }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Use Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: "20.x" | |
cache: "yarn" | |
cache-dependency-path: contracts/yarn.lock | |
- uses: actions/cache@v4 | |
id: hardhat-cache | |
with: | |
path: contracts/cache | |
key: ${{ runner.os }}-hardhat-${{ hashFiles('contracts/cache/*.json') }} | |
restore-keys: | | |
${{ runner.os }}-hardhat-cache | |
- run: yarn install --frozen-lockfile | |
working-directory: ./contracts | |
- run: yarn run test:coverage:arb-fork | |
working-directory: ./contracts | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: fork-test-arb-coverage-${{ github.sha }} | |
path: | | |
./contracts/coverage.json | |
./contracts/coverage/**/* | |
retention-days: 1 | |
contracts-hol-forktest: | |
name: "Holesky Fork Tests" | |
runs-on: ubuntu-latest | |
continue-on-error: true | |
env: | |
HARDHAT_CACHE_DIR: ./cache | |
PROVIDER_URL: ${{ secrets.PROVIDER_URL }} | |
HOLESKY_PROVIDER_URL: ${{ secrets.HOLESKY_PROVIDER_URL }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Use Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: "20.x" | |
cache: "yarn" | |
cache-dependency-path: contracts/yarn.lock | |
- uses: actions/cache@v4 | |
id: hardhat-cache | |
with: | |
path: contracts/cache | |
key: ${{ runner.os }}-hardhat-${{ hashFiles('contracts/cache/*.json') }} | |
restore-keys: | | |
${{ runner.os }}-hardhat-cache | |
- run: yarn install --frozen-lockfile | |
working-directory: ./contracts | |
- run: yarn run test:coverage:hol-fork | |
working-directory: ./contracts | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: fork-test-hol-coverage-${{ github.sha }} | |
path: | | |
./contracts/coverage.json | |
./contracts/coverage/**/* | |
retention-days: 1 | |
contracts-base-forktest: | |
name: "Base Fork Tests" | |
runs-on: ubuntu-latest | |
continue-on-error: true | |
env: | |
HARDHAT_CACHE_DIR: ./cache | |
PROVIDER_URL: ${{ secrets.PROVIDER_URL }} | |
BASE_PROVIDER_URL: ${{ secrets.BASE_PROVIDER_URL }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Use Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: "20.x" | |
cache: "yarn" | |
cache-dependency-path: contracts/yarn.lock | |
- uses: actions/cache@v3 | |
id: hardhat-cache | |
with: | |
path: contracts/cache | |
key: ${{ runner.os }}-hardhat-${{ hashFiles('contracts/cache/*.json') }} | |
restore-keys: | | |
${{ runner.os }}-hardhat-cache | |
- run: yarn install --frozen-lockfile | |
working-directory: ./contracts | |
- run: yarn run test:coverage:base-fork | |
working-directory: ./contracts | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: fork-test-base-coverage-${{ github.sha }} | |
path: | | |
./contracts/coverage.json | |
./contracts/coverage/**/* | |
retention-days: 1 | |
coverage-uploader: | |
name: "Upload Coverage Reports" | |
runs-on: ubuntu-latest | |
needs: | |
- contracts-unit-coverage | |
- contracts-forktest | |
- contracts-arb-forktest | |
- contracts-hol-forktest | |
- contracts-base-test | |
env: | |
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Use Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: "20.x" | |
cache: "yarn" | |
cache-dependency-path: contracts/yarn.lock | |
- uses: actions/cache@v4 | |
id: hardhat-cache | |
with: | |
path: contracts/cache | |
key: ${{ runner.os }}-hardhat-${{ hashFiles('contracts/cache/*.json') }} | |
restore-keys: | | |
${{ runner.os }}-hardhat-cache | |
- run: yarn install --frozen-lockfile | |
working-directory: ./contracts | |
- name: Download all reports | |
uses: actions/download-artifact@v4 | |
- uses: codecov/codecov-action@v4 | |
with: | |
fail_ci_if_error: true | |
slither: | |
name: "Slither" | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Python 3.10 | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.10' | |
- name: Install dependencies | |
run: | | |
wget https://github.com/ethereum/solidity/releases/download/v0.8.7/solc-static-linux | |
chmod +x solc-static-linux | |
sudo mv solc-static-linux /usr/local/bin/solc | |
pip3 install slither-analyzer | |
pip3 inspect | |
- name: Use Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: "20.x" | |
cache: "yarn" | |
cache-dependency-path: contracts/yarn.lock | |
- run: yarn install --frozen-lockfile | |
working-directory: ./contracts | |
- name: Test with Slither | |
working-directory: ./contracts | |
run: yarn run slither | |
snyk: | |
name: "Snyk" | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@master | |
- name: Run Snyk to check for vulnerabilities | |
uses: snyk/actions/node@master | |
continue-on-error: true | |
env: | |
SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }} | |
with: | |
args: --severity-threshold=high --all-projects |