diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 81ed908f..9ed6cb40 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -4,10 +4,6 @@ concurrency: cancel-in-progress: true group: ${{github.workflow}}-${{github.ref}} -env: - MAINNET_RPC_URL: ${{ secrets.MAINNET_RPC_URL }} - API_KEY_INFURA: ${{ secrets.API_KEY_INFURA }} - on: workflow_dispatch: pull_request: @@ -17,150 +13,32 @@ on: jobs: lint: - runs-on: "ubuntu-latest" - steps: - - name: "Check out the repo" - uses: "actions/checkout@v3" - - - name: "Install Foundry" - uses: "foundry-rs/foundry-toolchain@v1" - - - name: "Install Bun" - uses: "oven-sh/setup-bun@v1" - - - name: "Install the Node.js dependencies" - run: "bun install" - - - name: "Lint the code" - run: "bun run lint" - - - name: "Add lint summary" - run: | - echo "## Lint result" >> $GITHUB_STEP_SUMMARY - echo "✅ Passed" >> $GITHUB_STEP_SUMMARY + uses: "sablier-labs/reusable-workflows/.github/workflows/forge-lint.yml@main" build: - runs-on: "ubuntu-latest" - steps: - - name: "Check out the repo" - uses: "actions/checkout@v3" - - - name: "Install Foundry" - uses: "foundry-rs/foundry-toolchain@v1" - - - name: "Install Bun" - uses: "oven-sh/setup-bun@v1" - - - name: "Install the Node.js dependencies" - run: "bun install" - - - name: "Show the Foundry config" - run: "forge config" - - - name: "Build the contracts" - run: "forge build" - - - name: "Cache the build and the node modules so that they can be re-used by the other jobs" - uses: "actions/cache/save@v3" - with: - key: "build-and-modules-${{ github.sha }}" - path: | - cache - node_modules - out - - - name: "Add build summary" - run: | - echo "## Build result" >> $GITHUB_STEP_SUMMARY - echo "✅ Passed" >> $GITHUB_STEP_SUMMARY + uses: "sablier-labs/reusable-workflows/.github/workflows/forge-build.yml@main" test-integration: needs: ["lint", "build"] - env: - FOUNDRY_FUZZ_RUNS: "5000" - runs-on: "ubuntu-latest" - steps: - - name: "Check out the repo" - uses: "actions/checkout@v3" - - - name: "Install Foundry" - uses: "foundry-rs/foundry-toolchain@v1" - - - name: "Restore the cached build and the node modules" - uses: "actions/cache/restore@v3" - with: - fail-on-cache-miss: true - key: "build-and-modules-${{ github.sha }}" - path: | - cache - node_modules - out - - - name: "Run the integration tests" - run: "forge test --match-path \"test/integration/**/*.sol\"" - - - name: "Add test summary" - run: | - echo "## Integration tests result" >> $GITHUB_STEP_SUMMARY - echo "✅ Passed" >> $GITHUB_STEP_SUMMARY + uses: "sablier-labs/reusable-workflows/.github/workflows/forge-test.yml@main" + with: + foundry-fuzz-runs: 5000 + foundry-profile: "test-optimized" + match-path: "test/integration/**/*.sol" + name: "Integration tests" test-invariant: needs: ["lint", "build"] - runs-on: "ubuntu-latest" - steps: - - name: "Check out the repo" - uses: "actions/checkout@v3" - - - name: "Install Foundry" - uses: "foundry-rs/foundry-toolchain@v1" - - - name: "Restore the cached build and the node modules" - uses: "actions/cache/restore@v3" - with: - fail-on-cache-miss: true - key: "build-and-modules-${{ github.sha }}" - path: | - cache - node_modules - out - - - name: "Run the invariant tests" - run: "forge test --match-path \"test/invariant/**/*.sol\"" - - - name: "Add test summary" - run: | - echo "## Invariant tests result" >> $GITHUB_STEP_SUMMARY - echo "✅ Passed" >> $GITHUB_STEP_SUMMARY + uses: "sablier-labs/reusable-workflows/.github/workflows/forge-test.yml@main" + with: + foundry-profile: "test-optimized" + match-path: "test/invariant/**/*.sol" + name: "Invariant tests" coverage: needs: ["lint", "build"] - runs-on: "ubuntu-latest" - steps: - - name: "Check out the repo" - uses: "actions/checkout@v3" - - - name: "Install Foundry" - uses: "foundry-rs/foundry-toolchain@v1" - - - name: "Restore the cached build and the node modules" - uses: "actions/cache/restore@v3" - with: - fail-on-cache-miss: true - key: "build-and-modules-${{ github.sha }}" - path: | - cache - node_modules - out - - - name: "Generate the coverage report using the unit and the integration tests" - run: "forge coverage --match-path \"test/{unit,integration}/**/*.sol\" --report lcov" - - - name: "Upload coverage report to Codecov" - uses: "codecov/codecov-action@v3" - with: - files: "./lcov.info" - - - name: "Add coverage summary" - run: | - echo "## Coverage result" >> $GITHUB_STEP_SUMMARY - echo "✅ Uploaded to Codecov" >> $GITHUB_STEP_SUMMARY + secrets: + CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} + uses: "sablier-labs/reusable-workflows/.github/workflows/forge-coverage.yml@main" + with: + match-path: "test/{integration,unit}/**/*.sol"