Skip to content

CI Deep

CI Deep #107

Workflow file for this run

name: "CI Deep"
env:
MAINNET_RPC_URL: ${{ secrets.MAINNET_RPC_URL }}
on:
schedule:
- cron: "0 3 * * 0" # at 3:00am UTC every Sunday
workflow_dispatch:
inputs:
unitFuzzRuns:
default: '50000'
description: "Unit: number of fuzz runs."
required: false
integrationFuzzRuns:
default: '50000'
description: "Integration: number of fuzz runs."
required: false
invariantRuns:
default: '100'
description: "Invariant runs: number of sequences of function calls generated and run."
required: false
invariantDepth:
default: '100'
description: "Invariant depth: number of function calls made in a given run."
required: false
forkFuzzRuns:
default: '1000'
description: "Fork: number of fuzz runs."
required: false
jobs:
lint:
uses: "sablier-labs/reusable-workflows/.github/workflows/forge-lint.yml@main"
build:
uses: "sablier-labs/reusable-workflows/.github/workflows/forge-build.yml@main"
test-unit:
needs: ["lint", "build"]
uses: "sablier-labs/reusable-workflows/.github/workflows/forge-test.yml@main"
with:
foundry-fuzz-runs: ${{ fromJSON(inputs.unitFuzzRuns || '50000') }}
foundry-profile: "test-optimized"
match-path: "test/unit/**/*.sol"
name: "Unit tests"
test-integration:
needs: ["lint", "build"]
uses: "sablier-labs/reusable-workflows/.github/workflows/forge-test.yml@main"
with:
foundry-fuzz-runs: ${{ fromJSON(inputs.integrationFuzzRuns || '50000') }}
foundry-profile: "test-optimized"
match-path: "test/integration/**/*.sol"
name: "Integration tests"
test-invariant:
needs: ["lint", "build"]
uses: "sablier-labs/reusable-workflows/.github/workflows/forge-test.yml@main"
with:
foundry-invariant-depth: ${{ fromJSON(inputs.invariantDepth || '100') }}
foundry-invariant-runs: ${{ fromJSON(inputs.invariantRuns || '100') }}
foundry-profile: "test-optimized"
match-path: "test/invariant/**/*.sol"
name: "Invariant tests"
test-fork:
needs: ["lint", "build"]
secrets:
MAINNET_RPC_URL: ${{ secrets.MAINNET_RPC_URL }}
uses: "sablier-labs/reusable-workflows/.github/workflows/forge-test.yml@main"
with:
foundry-fuzz-runs: ${{ fromJSON(inputs.forkFuzzRuns || '1000') }}
foundry-profile: "test-optimized"
match-path: "test/fork/**/*.sol"
name: "Fork tests"
notify-on-failure:
if: failure()
needs: ["lint", "build", "test-unit", "test-integration", "test-invariant", "test-fork"]
runs-on: "ubuntu-latest"
steps:
- name: "Send Slack notification"
uses: "rtCamp/action-slack-notify@v2"
env:
SLACK_CHANNEL: "#ci-notifications"
SLACK_MESSAGE: "CI Workflow failed for ${{ github.repository }} on branch ${{ github.ref }} at job ${{ github.job }}."
SLACK_USERNAME: "GitHub CI"
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }}