-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
1 changed file
with
72 additions
and
39 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -4,87 +4,112 @@ on: | |
push: | ||
pull_request: | ||
|
||
permissions: | ||
contents: read | ||
pull-requests: write | ||
|
||
jobs: | ||
setup: | ||
runs-on: ubuntu-latest | ||
outputs: | ||
node-cache-key: ${{ steps.cache-keys.outputs.cache-key }} | ||
foundry-cache-key: ${{ steps.cache-foundry.outputs.cache-key }} | ||
cache-key: ${{ steps.cache-keys.outputs.cache-key }} | ||
steps: | ||
- name: Checkout | ||
uses: actions/[email protected] | ||
|
||
- name: Get node cache key | ||
- name: Get cache key | ||
id: cache-keys | ||
run: echo "::set-output name=cache-key::$(echo ${{ runner.os }}-node-$(cat yarn.lock | sha256sum | cut -d' ' -f1))" | ||
|
||
- name: Cache node modules | ||
uses: actions/cache@v4 | ||
uses: actions/cache@v3 | ||
with: | ||
path: | | ||
**/node_modules | ||
key: ${{ steps.cache-keys.outputs.cache-key }} | ||
|
||
- name: Set up Node.js | ||
uses: actions/[email protected] | ||
with: | ||
node-version: '20.x' | ||
cache: 'yarn' | ||
|
||
- name: Install JavaScript Dependencies | ||
- name: Install dependencies | ||
run: yarn install --frozen-lockfile | ||
|
||
- name: Ensure Foundry directory exists | ||
run: mkdir -p ~/.foundry | ||
|
||
- name: Get Foundry cache key | ||
id: cache-foundry | ||
run: echo "::set-output name=cache-key::$(echo ${{ runner.os }}-foundry-$(date +%s))" | ||
|
||
- name: Cache Foundry Toolchain | ||
uses: actions/cache@v4 | ||
with: | ||
path: | | ||
~/.foundry | ||
key: ${{ steps.cache-foundry.outputs.cache-key }} | ||
|
||
- name: Install Foundry and dependencies | ||
if: steps.cache-foundry.outputs.cache-hit != 'true' | ||
uses: foundry-rs/[email protected] | ||
with: | ||
version: nightly | ||
|
||
- name: Add Foundry to PATH | ||
run: echo "$HOME/.foundry/bin" >> $GITHUB_PATH | ||
|
||
lint: | ||
name: Lint sources | ||
runs-on: ubuntu-latest | ||
needs: setup | ||
strategy: | ||
matrix: | ||
node-version: [18.x] | ||
steps: | ||
- uses: actions/[email protected] | ||
- name: Checkout | ||
uses: actions/[email protected] | ||
|
||
- name: Cache node modules | ||
uses: actions/cache@v3 | ||
with: | ||
path: | | ||
**/node_modules | ||
key: ${{ needs.setup.outputs.cache-key }} | ||
|
||
- name: Lint sources | ||
run: yarn lint:sol | ||
|
||
unit_test: | ||
name: Unit tests | ||
runs-on: ubuntu-latest | ||
needs: setup | ||
strategy: | ||
matrix: | ||
node-version: [18.x] | ||
steps: | ||
- uses: actions/[email protected] | ||
- name: Checkout | ||
uses: actions/[email protected] | ||
|
||
- name: Cache node modules | ||
uses: actions/cache@v3 | ||
with: | ||
path: | | ||
**/node_modules | ||
key: ${{ needs.setup.outputs.cache-key }} | ||
|
||
- name: Create a fake .secret file | ||
run: echo "primary twist rack vendor diagram image used route theme frown either will" > .secret | ||
|
||
- name: Install Foundry | ||
uses: foundry-rs/foundry-toolchain@v1 | ||
with: | ||
version: nightly | ||
cache: true | ||
|
||
- name: Install foundry dependencies | ||
run: forge install | ||
|
||
- name: Build Typechain and Foundry | ||
run: yarn build | ||
|
||
- name: Run Forge and Hardhat Tests | ||
run: yarn build && yarn test | ||
run: yarn test | ||
|
||
coverage: | ||
name: Generate coverage report | ||
needs: setup | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/[email protected] | ||
|
||
- name: Cache node modules | ||
uses: actions/cache@v3 | ||
with: | ||
path: | | ||
**/node_modules | ||
key: ${{ needs.setup.outputs.cache-key }} | ||
|
||
- name: Generate Hardhat & Foundry Coverage Report | ||
run: yarn coverage:report | ||
|
||
- name: Install Foundry | ||
uses: foundry-rs/foundry-toolchain@v1 | ||
with: | ||
version: nightly | ||
cache: true | ||
|
||
- name: Upload Coverage Report to Codecov | ||
uses: codecov/[email protected] | ||
with: | ||
|
@@ -94,11 +119,17 @@ jobs: | |
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} | ||
|
||
slither_analysis: | ||
name: Slither Analysis | ||
needs: setup | ||
runs-on: ubuntu-latest | ||
steps: | ||
- uses: actions/[email protected] | ||
- name: Cache node modules | ||
uses: actions/cache@v3 | ||
with: | ||
path: | | ||
**/node_modules | ||
key: ${{ needs.setup.outputs.cache-key }} | ||
|
||
- name: Run Slither | ||
uses: crytic/[email protected] | ||
with: | ||
|
@@ -107,6 +138,8 @@ jobs: | |
slither-args: '--filter-paths "contracts/mock|node_modules" --checklist --markdown-root ${{ github.server_url }}/${{ github.repository }}/blob/${{ github.sha }}/contracts/' | ||
- name: Create/update checklist as PR comment | ||
uses: actions/[email protected] | ||
env: | ||
REPORT: ${{ steps.slither_analysis.outputs.stdout }} | ||
with: | ||
script: | | ||
const script = require('.github/scripts/comment') | ||
|