Skip to content

Commit

Permalink
Add ci workflow (#17)
Browse files Browse the repository at this point in the history
- Add ci
  • Loading branch information
alexkeating authored Dec 9, 2024
1 parent ca19636 commit ed5e268
Show file tree
Hide file tree
Showing 7 changed files with 153 additions and 55 deletions.
148 changes: 148 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,148 @@
name: L2 contracts ci

on:
workflow_dispatch:
pull_request:
push:
branches:
- main

env:
FOUNDRY_PROFILE: ci

jobs:
build:
defaults:
run:
working-directory: ./l2-contracts
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3

- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1

- name: Install the dependencies
run: npm install

- name: Build contracts
run: npm run compile

test:
defaults:
run:
working-directory: ./l2-contracts
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3

- name: Install Foundry
uses: dutterbutter/foundry-zksync-toolchain@v1

- name: Install the dependencies
run: npm install

- name: Run tests
run: forge test --no-match-path .integration.t.sol --zksync

- name: Run Era test node
uses: dutterbutter/[email protected]

- name: Run tests
run: npx hardhat test

## coverage:
## defaults:
## run:
## working-directory: ./l2-contracts
## runs-on: ubuntu-latest
## env:
## SKIP_SAFETY_CHECK_IN_UPGRADE_TEST: true
## steps:
## - uses: actions/checkout@v3

## - name: Install Foundry
## uses: dutterbutter/foundry-zksync-toolchain@v1

## - name: Run coverage
## run: FOUNDRY_PROFILE=default npm run foundry-test && FOUNDRY_PROFILE=default forge coverage --report summary --report lcov --no-match-path .integration.t.sol --zksync

## # 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 'test/*' 'script/*' 'src/lib/*' --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: 83 # Set coverage threshold.

lint:
defaults:
run:
shell: bash
working-directory: ./l2-contracts
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3

- name: Install Foundry
uses: foundry-rs/foundry-toolchain@v1

- name: Install scopelint
uses: engineerd/[email protected]
with:
name: scopelint
repo: ScopeLift/scopelint
fromGitHubReleases: true
version: latest
pathInArchive: scopelint-x86_64-linux/scopelint
urlTemplate: https://github.com/ScopeLift/scopelint/releases/download/{{version}}/scopelint-x86_64-linux.tar.xz
token: ${{ secrets.GITHUB_TOKEN }}

- name: Check formatting
run: |
scopelint --version
scopelint check
# DISABLED WHILE REPO IS PRIVATE
# slither-analyze:
# runs-on: ubuntu-latest
# permissions:
# contents: read
# security-events: write
# steps:
# - uses: actions/checkout@v3

# - name: Run Slither
# uses: crytic/[email protected]
# id: slither # Required to reference this step in the next step.
# with:
# fail-on: none # Required to avoid failing the CI run regardless of findings.
# sarif: results.sarif
# slither-args: --filter-paths "./lib|./test" --exclude naming-convention,solc-version

# - name: Upload SARIF file
# uses: github/codeql-action/upload-sarif@v2
# with:
# sarif_file: ${{ steps.slither.outputs.sarif }}
6 changes: 3 additions & 3 deletions l2-contracts/foundry.toml
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
[profile.default]
evm_version = "paris"
fs_permissions = [{ access = "read", path = "./zkout" }]
fuzz = { runs = 50 }
optimizer = true
optimizer_runs = 10_000_000
Expand All @@ -11,11 +12,10 @@
]
solc_version = "0.8.24"
verbosity = 3
fs_permissions = [{ access = "read", path = "./zkout" }]

[profile.ci]
fuzz = { runs = 5000 }
invariant = { runs = 1000 }
fuzz = { runs = 1000 }
invariant = { runs = 500 }

[profile.lite]
fuzz = { runs = 50 }
Expand Down
2 changes: 1 addition & 1 deletion l2-contracts/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
"compile": "forge build && npx hardhat compile",
"local-node": "npx hardhat node-zksync",
"script": "node script/RunScript.js",
"foundry-test": "forge test --no-match-path .integration.t.sol",
"foundry-test": "forge test --no-match-path .integration.t.sol --zksync",
"test": "forge test && npx hardhat test",
"lint": "scopelint check",
"lint:fix": "scopelint fmt"
Expand Down
12 changes: 0 additions & 12 deletions l2-contracts/script/Counter.s.sol

This file was deleted.

14 changes: 0 additions & 14 deletions l2-contracts/src/Counter.sol

This file was deleted.

24 changes: 0 additions & 24 deletions l2-contracts/test/Counter.t.sol

This file was deleted.

2 changes: 1 addition & 1 deletion l2-contracts/test/ZkCappedMinterFactory.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ contract ZkCappedMinterFactoryTest is ZkTokenTest {

function setUp() public virtual override {
super.setUp();

// Read the bytecode hash from the JSON file
string memory root = vm.projectRoot();
string memory path = string.concat(root, "/zkout/ZkCappedMinter.sol/ZkCappedMinter.json");
Expand Down

0 comments on commit ed5e268

Please sign in to comment.