WIP Sonic Staking #3607
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-unit-coverage: | |
name: "Mainnet 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 Mainnet 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: "Base 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 Base Unit Coverage | |
env: | |
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-sonic-test: | |
name: "Sonic 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 Sonic Unit Coverage | |
env: | |
UNIT_TESTS_NETWORK: sonic | |
run: yarn run test:coverage:sonic | |
working-directory: ./contracts | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: sonic-unit-test-coverage-${{ github.sha }} | |
path: | | |
./contracts/coverage.json | |
./contracts/coverage/**/* | |
retention-days: 1 | |
contracts-forktest: | |
name: "Mainnet 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@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:base-fork | |
working-directory: ./contracts | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: fork-test-base-coverage-${{ github.sha }} | |
path: | | |
./contracts/coverage.json | |
./contracts/coverage/**/* | |
retention-days: 1 | |
contracts-sonic-forktest: | |
name: "Sonic Fork Tests" | |
runs-on: ubuntu-latest | |
continue-on-error: true | |
env: | |
HARDHAT_CACHE_DIR: ./cache | |
PROVIDER_URL: ${{ secrets.PROVIDER_URL }} | |
SONIC_PROVIDER_URL: ${{ secrets.SONIC_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:sonic-fork | |
working-directory: ./contracts | |
- uses: actions/upload-artifact@v4 | |
with: | |
name: fork-test-sonic-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-base-test | |
- contracts-sonic-test | |
- contracts-forktest | |
- contracts-arb-forktest | |
- contracts-hol-forktest | |
- contracts-base-forktest | |
- contracts-sonic-forktest | |
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 |