chore: chainid => clientChainId #415
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: Forge CI to build, test, format and compare storage layout | |
on: | |
merge_group: | |
pull_request: | |
push: | |
branches: | |
- main | |
- release/** | |
tags: | |
- "*" | |
jobs: | |
setup: | |
uses: ./.github/workflows/foundry-setup.yml | |
with: | |
foundry-version: nightly | |
build: | |
runs-on: ubuntu-latest | |
needs: setup | |
outputs: | |
installation-dir: ${{ needs.setup.outputs.installation-dir }} | |
cache-key: ${{ needs.setup.outputs.cache-key }} | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
with: | |
submodules: recursive | |
- name: Restore cached Foundry toolchain | |
uses: actions/cache/restore@v3 | |
with: | |
path: ${{ needs.setup.outputs.installation-dir }} | |
key: ${{ needs.setup.outputs.cache-key }} | |
- name: Add Foundry to PATH | |
run: echo "${{ needs.setup.outputs.installation-dir }}" >> $GITHUB_PATH | |
- name: Build | |
run: forge build | |
- name: Add comment for build failure | |
if: failure() | |
uses: actions/github-script@v6 | |
with: | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
script: | | |
github.rest.issues.createComment({ | |
issue_number: context.issue.number, | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
body: 'The build has failed. Please check the logs.' | |
}) | |
- name: Cache build artifacts | |
uses: actions/cache/save@v3 | |
with: | |
path: | | |
./lib | |
./out | |
./cache | |
./broadcast | |
key: ${{ runner.os }}-build-${{ github.sha }} | |
test: | |
runs-on: ubuntu-latest | |
needs: build | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Restore cached Foundry toolchain | |
uses: actions/cache/restore@v3 | |
with: | |
path: ${{ needs.build.outputs.installation-dir }} | |
key: ${{ needs.build.outputs.cache-key }} | |
- name: Add Foundry to PATH | |
run: echo "${{ needs.build.outputs.installation-dir }}" >> $GITHUB_PATH | |
- name: Restore build artifacts | |
uses: actions/cache/restore@v3 | |
with: | |
path: | | |
./lib | |
./out | |
./cache | |
./broadcast | |
key: ${{ runner.os }}-build-${{ github.sha }} | |
- name: Test | |
run: forge test -vvv | |
- name: Set test snapshot as summary | |
run: NO_COLOR=1 forge snapshot >> $GITHUB_STEP_SUMMARY | |
- name: Add comment for test failure | |
if: failure() | |
uses: actions/github-script@v6 | |
with: | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
script: | | |
github.rest.issues.createComment({ | |
issue_number: context.issue.number, | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
body: 'The tests have failed. Please check the logs.' | |
}) | |
format: | |
runs-on: ubuntu-latest | |
needs: build | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Restore cached Foundry toolchain | |
uses: actions/cache/restore@v3 | |
with: | |
path: ${{ needs.build.outputs.installation-dir }} | |
key: ${{ needs.build.outputs.cache-key }} | |
- name: Add Foundry to PATH | |
run: echo "${{ needs.build.outputs.installation-dir }}" >> $GITHUB_PATH | |
- name: Restore build artifacts | |
uses: actions/cache/restore@v3 | |
with: | |
path: | | |
./lib | |
./out | |
./cache | |
./broadcast | |
key: ${{ runner.os }}-build-${{ github.sha }} | |
- name: Check formatting | |
run: forge fmt --check | |
- name: Add comment for format check failure | |
if: failure() | |
uses: actions/github-script@v6 | |
with: | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
script: | | |
github.rest.issues.createComment({ | |
issue_number: context.issue.number, | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
body: 'The code is not formatted correctly. Please run `forge fmt` and push the changes.' | |
}) | |
compare-storage-layout: | |
runs-on: ubuntu-latest | |
needs: build | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@v4 | |
- name: Restore cached Foundry toolchain | |
uses: actions/cache/restore@v3 | |
with: | |
path: ${{ needs.build.outputs.installation-dir }} | |
key: ${{ needs.build.outputs.cache-key }} | |
- name: Add Foundry to PATH | |
run: echo "${{ needs.build.outputs.installation-dir }}" >> $GITHUB_PATH | |
- name: Restore build artifacts | |
uses: actions/cache/restore@v3 | |
with: | |
path: | | |
./lib | |
./out | |
./cache | |
./broadcast | |
key: ${{ runner.os }}-build-${{ github.sha }} | |
- name: Run forge inspect storage layout on ClientChainGateway | |
run: forge inspect --pretty src/core/ClientChainGateway.sol:ClientChainGateway storageLayout > ClientChainGateway.md | |
- name: Run forge inspect storage layout on Bootstrap | |
run: forge inspect --pretty src/core/Bootstrap.sol:Bootstrap storageLayout > Bootstrap.md | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.12.4' | |
- name: Install pandas | |
run: pip install --root-user-action=ignore pandas==2.2.2 | |
- name: Run the comparison script | |
run: python .github/workflows/compare_storage_layout.py | |
- name: Add comment for storage layout mismatch failure | |
if: failure() | |
uses: actions/github-script@v6 | |
with: | |
github-token: ${{ secrets.GITHUB_TOKEN }} | |
script: | | |
github.rest.issues.createComment({ | |
issue_number: context.issue.number, | |
owner: context.repo.owner, | |
repo: context.repo.repo, | |
body: 'The storage layout of Bootstrap and ClientChainGateway is not the same. Please check the logs.' | |
}) |