Skip to content

Yield Delegation / Rebasing Token Rewrite #3320

Yield Delegation / Rebasing Token Rewrite

Yield Delegation / Rebasing Token Rewrite #3320

Workflow file for this run

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