fix(evm): catch the evm module up with the tracked modules #9837
Workflow file for this run
This file contains hidden or 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: Tests | |
| on: | |
| push: | |
| branches: [ main, feature/evm-network-driver, feature/zkat-snark-driver ] | |
| pull_request: | |
| branches: [ main, feature/evm-network-driver, feature/zkat-snark-driver ] | |
| workflow_dispatch: | |
| inputs: | |
| fsc-version: | |
| default: 'github.com/hyperledger-labs/fabric-smart-client@main' | |
| required: true | |
| description: 'FSC dependency' | |
| env: | |
| GOFLAGS: -mod=mod | |
| jobs: | |
| checks: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Set up Go | |
| uses: actions/setup-go@v5 | |
| with: | |
| go-version-file: "go.mod" | |
| cache-dependency-path: "**/*.sum" | |
| - name: Replace FSC dep | |
| run: | | |
| if [ -n "${{ github.event.inputs.fsc-version }}" ]; then | |
| echo "Replace FSC dependency" | |
| go mod edit -replace=github.com/hyperledger-labs/fabric-smart-client=${{ github.event.inputs.fsc-version }} | |
| go mod tidy || true | |
| else | |
| echo "Skipping FSC dependency replacement" | |
| fi | |
| - name: Set up tools | |
| run: make install-tools | |
| - name: Run checks | |
| run: make checks | |
| - name: Run linter | |
| run: make lint | |
| utest: | |
| needs: checks | |
| runs-on: ubuntu-latest | |
| strategy: | |
| matrix: | |
| tests: [unit-tests-race, unit-tests-regression] | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Set up Go | |
| uses: actions/setup-go@v5 | |
| with: | |
| go-version-file: "go.mod" | |
| cache-dependency-path: "**/*.sum" | |
| - name: Set up tools | |
| run: make install-tools | |
| - name: Install Testing Docker Images | |
| run: make testing-docker-images | |
| - name: Unit Tests with Coverage | |
| run: | | |
| make unit-tests | |
| ./ci/scripts/filter-coverage.sh profile.cov profile.cov | |
| - name: Send coverage to Coveralls | |
| uses: coverallsapp/github-action@v2 | |
| with: | |
| github-token: ${{ secrets.GITHUB_TOKEN }} | |
| file: profile.cov | |
| flag-name: utest-${{ matrix.tests }} | |
| parallel: true | |
| fail-on-error: false | |
| - name: Run ${{ matrix.tests }} | |
| run: make ${{ matrix.tests }} | |
| itest: | |
| needs: checks | |
| if: github.ref == 'refs/heads/main' || github.base_ref == 'main' | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| # NOTE: the fungible suites loop over integration.AllTestTypes, so a plain | |
| # "TN" label filter runs that spec once per infrastructure type | |
| # (websocket, libp2p, replicas) sequentially in a single job. The specs | |
| # calling fungible.TestAll are expensive enough that this tripled the job | |
| # runtime (~45m), so they are split into one job per infrastructure type | |
| # here. Coverage is unchanged: all three configurations still run, just in | |
| # parallel. See fungible.mk / fabricx.mk for the matching targets. | |
| tests: [ | |
| dlog-fabric-t1-websocket, | |
| dlog-fabric-t1-libp2p, | |
| dlog-fabric-t1-replicas, | |
| dlog-fabric-t2, | |
| dlog-fabric-t2.1, | |
| dlog-fabric-t3, | |
| dlog-fabric-t4, | |
| dlog-fabric-t5, | |
| dlog-fabric-t6-websocket, | |
| dlog-fabric-t6-libp2p, | |
| dlog-fabric-t6-replicas, | |
| dlog-fabric-t7, | |
| dlog-fabric-t8-websocket, | |
| dlog-fabric-t8-libp2p, | |
| dlog-fabric-t8-replicas, | |
| dlog-fabric-t9, | |
| dlog-fabric-t10-websocket, | |
| dlog-fabric-t10-libp2p, | |
| dlog-fabric-t10-replicas, | |
| dlog-fabric-t11, | |
| dlog-fabric-t12, | |
| dlog-fabric-t13, | |
| # dlog-fabric-t14, | |
| fabricx-dlog-t1-websocket, | |
| fabricx-dlog-t1-libp2p, | |
| fabricx-dlog-t1-replicas, | |
| # fabricx-dlog-t2, | |
| # fabricx-dlog-t2.1, | |
| fabricx-dlog-t3, | |
| fabricx-dlog-t4, | |
| fabricx-dlog-t5, | |
| fabricx-dlog-t6-websocket, | |
| fabricx-dlog-t6-libp2p, | |
| fabricx-dlog-t6-replicas, | |
| # fabricx-dlog-t7, | |
| # fabricx-dlog-t9, | |
| fabricx-dlog-t11, | |
| # fabricx-dlog-t12, | |
| fabricx-dlog-t13, | |
| # fabricx-dlog-t14, | |
| fabricx-dlog-t16-websocket, | |
| fabricx-dlog-t16-libp2p, | |
| fabricx-dlog-t16-replicas, | |
| fabtoken-dlog-fabric, | |
| dloghsm-fabric-t1-websocket, | |
| dloghsm-fabric-t1-libp2p, | |
| dloghsm-fabric-t1-replicas, | |
| dloghsm-fabric-t2-websocket, | |
| dloghsm-fabric-t2-libp2p, | |
| dloghsm-fabric-t2-replicas, | |
| fabtoken-fabric-t1-websocket, | |
| fabtoken-fabric-t1-libp2p, | |
| fabtoken-fabric-t1-replicas, | |
| fabtoken-fabric-t2, | |
| fabtoken-fabric-t3, | |
| fabtoken-fabric-t4, | |
| fabtoken-fabric-t5, | |
| update-t1, | |
| update-t2, | |
| update-t3, | |
| nft-dlog, | |
| nft-fabtoken, | |
| dvp-fabtoken, | |
| dvp-dlog, | |
| interop-fabtoken-t1, | |
| interop-fabtoken-t3, | |
| interop-fabtoken-t4, | |
| interop-fabtoken-t5, | |
| interop-dlog-t1, | |
| interop-dlog-t3, | |
| interop-dlog-t4, | |
| interop-dlog-t5, | |
| dlogstress-t1, | |
| ] | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Set up Go | |
| uses: actions/setup-go@v5 | |
| with: | |
| go-version-file: "go.mod" | |
| cache-dependency-path: "**/*.sum" | |
| - name: Set up tools | |
| run: make install-tools | |
| - name: Download fabric binaries | |
| run: make download-fabric | |
| - name: Docker | |
| run: make docker-images | |
| - name: Fabric-x setup | |
| if: startsWith(matrix.tests, 'fabricx') | |
| run: | | |
| make fxconfig configtxgen fabricx-docker-images | |
| - name: Run ${{ matrix.tests }} | |
| run: | | |
| mkdir -p covdata | |
| GOCOVERDIR=$(realpath covdata) make integration-tests-${{ matrix.tests }} | |
| go tool covdata textfmt -i=covdata -o coverage.profile | |
| ./ci/scripts/filter-coverage.sh coverage.profile coverage.profile | |
| - name: Send coverage to Coveralls | |
| uses: coverallsapp/github-action@v2 | |
| with: | |
| github-token: ${{ secrets.GITHUB_TOKEN }} | |
| file: coverage.profile | |
| flag-name: itest-${{ matrix.tests }} | |
| parallel: true | |
| fail-on-error: false | |
| # The evm suites run on the feature branch rather than on main, because that is where the driver | |
| # lives until it graduates. They are their own job for two reasons: they need foundry, which nothing | |
| # else in this workflow does, and they need no fabric binaries at all. | |
| # | |
| # No coverage upload here on purpose. The other jobs upload with parallel: true and publish-coverage | |
| # closes the set; adding this one would either make that job wait on a run that is skipped on main, | |
| # or leave a parallel report that never finishes. | |
| itest-evm: | |
| needs: checks | |
| if: github.ref == 'refs/heads/feature/evm-network-driver' || github.base_ref == 'feature/evm-network-driver' | |
| runs-on: ubuntu-latest | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| tests: [ evm, evm-fabtoken ] | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| with: | |
| # forge-std is a submodule of the contracts project, and the deploy script imports it. | |
| # Without this the checkout is missing lib/forge-std and forge fails to compile. | |
| submodules: recursive | |
| - name: Set up Go | |
| uses: actions/setup-go@v5 | |
| with: | |
| go-version-file: "go.mod" | |
| cache-dependency-path: "**/*.sum" | |
| - name: Set up tools | |
| run: make install-tools | |
| - name: Set up foundry | |
| uses: foundry-rs/foundry-toolchain@v1 | |
| with: | |
| version: stable | |
| - name: Run ${{ matrix.tests }} | |
| run: make integration-tests-${{ matrix.tests }} | |
| publish-coverage: | |
| needs: [ utest, itest ] | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Finish coverage report | |
| uses: coverallsapp/github-action@v2 | |
| with: | |
| github-token: ${{ secrets.GITHUB_TOKEN }} | |
| parallel-finished: true | |
| fail-on-error: false | |
| bench-check: | |
| needs: checks | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Set up Go | |
| uses: actions/setup-go@v5 | |
| with: | |
| go-version-file: "go.mod" | |
| cache-dependency-path: "**/*.sum" | |
| - name: Download dependencies | |
| run: go mod download | |
| - name: Compile benchmarks (do not run) | |
| run: go test ./... -run=^$ -bench=^$ | |
| # Guard: the tokengen / artifactgen binaries must build without cgo so | |
| # they can be distributed in scratch / alpine images and on hosts | |
| # without a C toolchain. See #1445. | |
| cgo-check: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v4 | |
| - name: Set up Go | |
| uses: actions/setup-go@v5 | |
| with: | |
| go-version-file: "go.mod" | |
| cache-dependency-path: "**/*.sum" | |
| - name: Download dependencies | |
| run: go mod download | |
| - name: Build tokengen without cgo | |
| env: | |
| CGO_ENABLED: "0" | |
| run: cd ./cmd/tokengen; go build -o /dev/null . | |
| - name: Build artifactgen without cgo | |
| env: | |
| CGO_ENABLED: "0" | |
| run: cd ./cmd/artifactgen; go build -o /dev/null . | |