Skip to content

Axiom V2 mainnet release #1

Axiom V2 mainnet release

Axiom V2 mainnet release #1

Workflow file for this run

name: Foundry
on:
workflow_dispatch:
pull_request:
push:
branches:
- main
jobs:
test:
name: Foundry Tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
submodules: recursive
- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1
- name: Check forge version
run: forge --version
- name: Check forge tree
run: forge tree
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: "3.10"
- name: Install solc-select and solc
run: |
pip3 install solc-select
solc-select use 0.8.19 --always-install
- name: Run Foundry tests
run: |
export MAINNET_RPC_URL=${{ vars.MAINNET_RPC_URL }}
export GOERLI_RPC_URL=${{ vars.GOERLI_RPC_URL }}
export SEPOLIA_RPC_URL=${{ vars.SEPOLIA_RPC_URL }}
RUST_BACKTRACE=1 forge test -vvv --gas-report
coverage:
name: Test Coverage
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1
- name: Setup Python
uses: actions/setup-python@v4
with:
python-version: "3.10"
- name: Install solc-select and solc
run: |
pip3 install solc-select
solc-select use 0.8.19 --always-install
- name: Run coverage
run: forge coverage --report summary --report lcov
# To ignore coverage for certain directories modify the paths in this step as needed. The
# below default ignores coverage results for the test and script directories. Alternatively,
# to include coverage in all directories, comment out this step. Note that because this
# filtering applies to the lcov file, the summary table generated in the previous step will
# still include all files and directories.
# The `--rc lcov_branch_coverage=1` part keeps branch info in the filtered report, since lcov
# defaults to removing branch info.
- name: Filter directories
run: |
sudo apt update && sudo apt install -y lcov
lcov --remove lcov.info 'contracts/mock/*' 'test/*' 'script/*' --output-file lcov.info --rc lcov_branch_coverage=1
# This step posts a detailed coverage report as a comment and deletes previous comments on
# each push. The below step is used to fail coverage if the specified coverage threshold is
# not met. The below step can post a comment (when it's `github-token` is specified) but it's
# not as useful, and this action cannot fail CI based on a minimum coverage threshold, which
# is why we use both in this way.
- name: Post coverage report
if: github.event_name == 'pull_request' # This action fails when ran outside of a pull request.
uses: romeovs/[email protected]
with:
delete-old-comments: true
lcov-file: ./lcov.info
github-token: ${{ secrets.GITHUB_TOKEN }} # Adds a coverage summary comment to the PR.
# - name: Verify minimum coverage
# uses: zgosalvez/github-actions-report-lcov@v2
# with:
# coverage-files: ./lcov.info
# minimum-coverage: 100 # Set coverage threshold.
lint:
name: Code Formatting Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1
- name: Check formatting
run: forge fmt --check
# slither-analyze:
# name: Slither Static Analysis
# runs-on: ubuntu-latest
# permissions:
# actions: read
# contents: read
# security-events: write
# steps:
# - uses: actions/checkout@v3
# - name: Install Foundry
# uses: foundry-rs/foundry-toolchain@v1
# - name: Build foundry
# run: forge build --build-info
# - name: Run Slither
# uses: crytic/[email protected]
# id: slither # Required to reference this step in the next step.
# with:
# ignore-compile: true
# node-version: 18
# fail-on: none # Required to avoid failing the CI run regardless of findings.
# sarif: results.sarif
# - name: Upload SARIF file
# uses: github/codeql-action/upload-sarif@v2
# with:
# sarif_file: ${{ steps.slither.outputs.sarif }}