Skip to content

CI checks

CI checks #42

Workflow file for this run

on: [pull_request, workflow_dispatch]
concurrency:
group: ${{github.workflow}}-${{github.ref}}
cancel-in-progress: true
jobs:
prettify:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os:
- ubuntu-latest
node_version:
- 20
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Use Node.js ${{ matrix.node_version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node_version }}
- name: Run Prettier
run: npx prettier -c '**/*.{md,yml,yaml}'
- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1
with:
version: nightly
- name: Check Solidity formatting with forge fmt
run: |
# Stash changes from the checkout step to ignore in the formatting check
git stash -u
# Remember the current HEAD commit
BEFORE_FMT=$(git rev-parse HEAD)
# Run forge fmt to format Solidity files
forge fmt
# Check if there are any changes by comparing the current HEAD to the tree after running forge fmt
if [ -n "$(git diff $BEFORE_FMT)" ]; then
echo "Solidity files are not formatted correctly. Please run 'forge fmt' locally and commit the changes."
git diff $BEFORE_FMT
exit 1
else
echo "All Solidity files are formatted correctly."
fi
# Optional: Revert changes made by forge fmt to leave the working directory clean
- name: Revert formatting changes
if: failure()
run: git reset --hard $BEFORE_FMT
codespell:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os:
- ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Run codespell
uses: codespell-project/actions-codespell@v2.0
with:
check_filenames: true
ignore_words_list: we
skip: ./.git,./lib,./certora
validate-links:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os:
- ubuntu-latest
ruby_version:
- 3.3
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Ruby
uses: ruby/setup-ruby@v1
with:
ruby-version: ${{ matrix.ruby_version }}
bundler-cache: true
- name: Install awesome_bot
run: gem install awesome_bot
- name: Validate URLs
run: awesome_bot ./*.md src/**/*.sol --allow-dupe --allow-redirect --request-delay 0.4 --white-list mainnet.infura.io/v3,localhost
tests:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os:
- ubuntu-latest
node_version:
- 20
steps:
- name: Checkout
uses: actions/checkout@v4
with:
submodules: "recursive"
- name: Install Bun
run: |
curl -fsSL https://bun.sh/install | bash
export PATH="$HOME/.bun/bin/:$PATH"
bun
- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1
with:
version: nightly
- name: Run Forge build
run: |
forge --version
sudo apt-get install tree # For Ubuntu
# For macOS, use: brew install tree
tree -I lib
id: build
- name: Run Forge tests
env:
MAINNET_RPC_URL: ${{ secrets.MAINNET_RPC_URL }}
MAINNET_ARCHIVE_RPC_URL: ${{ secrets.MAINNET_ARCHIVE_RPC_URL }}
run: |
forge test -vvv --ffi --mc "YieldOracle_ForkTest"
id: t
solhint:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os:
- ubuntu-latest
node_version:
- 20
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Run solhint
run: |
yarn install
yarn solhint