Skip to content

ci: run the lean zakura test suite on fork branches#62

Closed
evan-forbes wants to merge 5 commits into
feat/p2p-v2from
evan/ci-fork-tests
Closed

ci: run the lean zakura test suite on fork branches#62
evan-forbes wants to merge 5 commits into
feat/p2p-v2from
evan/ci-fork-tests

Conversation

@evan-forbes

Copy link
Copy Markdown

Motivation

Zebra's CI test workflows trigger only on branches: [main], so none of them
ran on this fork's ironwood-main baseline or the feat/p2p-v2 stack — pushes
and PRs there silently skipped unit tests, crate builds, lint, and coverage.

What this does

Adds the fork branches (ironwood-main, evan/ironwood-qol, feat/p2p-v2) to
the push / pull_request filters of tests-unit, test-crates, test-docker,
lint, and coverage, and adopts the lean tuning from the zakura fork:

  • unit tests on ubuntu-latest + stable only (debug on PRs, release off the
    PR path) instead of upstream's ubuntu/macOS/Windows × stable/beta matrix
  • merge_group + nightly schedule + workflow_dispatch triggers
  • heavy release unit run + Docker image build + config tests gated behind the
    A-release label / non-PR events

Newer ironwood-only job content is kept: the zebra-rollback-state
rollback-tool Docker check, the MSRV rollback-state build, and the taiki-e
cargo-deny install (avoids cargo-deny-action registry timeouts). The
status-checks patch's paths-ignore is restored to an exact inverse of the
test workflows (supply-chain/**, .config/nextest.toml).

Test evidence

This PR is the test evidence: it targets feat/p2p-v2 precisely so the new
lean suite runs against the p2p stack for the first time. On a non-release PR
this exercises debug unit tests, the full crate-build matrix, and lint —
Docker/coverage stay gated off. Triaging the resulting check failures here.

AI disclosure

Used Claude Code to author these workflow changes.

The upstream Zebra CI test workflows trigger only on `branches: [main]`, so
none of them ran on this fork's `ironwood-main` baseline or the `feat/p2p-v2`
stack (a push to `feat/p2p-v2` or a PR targeting `ironwood-main` never matched
the filter). Add the fork branches (`ironwood-main`, `evan/ironwood-qol`,
`feat/p2p-v2`) to the push and pull_request filters of unit/crate/docker/lint
and coverage.

Adopt zakura's lean tuning so the fork doesn't pay upstream's full cost:
- unit tests run on ubuntu-latest + stable only (was ubuntu/macOS/Windows x
  stable/beta), with a debug build on PRs and a release build off the PR path
- add merge_group, a nightly schedule, and workflow_dispatch triggers
- gate the heavy release unit run, the Docker image build, and the config
  tests behind the `A-release` label / non-PR events

Keep the newer ironwood-only job content: the `zebra-rollback-state`
rollback-tool Docker check, the MSRV rollback-state build, and the taiki-e
cargo-deny install that avoids cargo-deny-action registry timeouts. Also
restore the status-checks patch's paths-ignore to an exact inverse of the
test workflows (adds `supply-chain/**` and `.config/nextest.toml`).
Enabling the lint suite on fork branches surfaced pre-existing lint
failures already present on feat/p2p-v2:

- zebra-rpc cookie.rs: drop needless `Ok(_?)` (clippy::needless_question_mark)
- zebrad datadir.rs: drop a needless `&` borrow (clippy::needless_borrow)
- zebra-network zakura testkit node.rs: gate the test-only `endpoint()` with
  `#[cfg(test)]` so the non-test lib build no longer flags it as dead code
- zebrad reorg.rs test: rustfmt
These tests fail deterministically on feat/p2p-v2 (in both debug and
release) but were hidden behind nextest fail-fast, which cancelled the run
at the first failure:

- local_genesis: NU7 inherits the post-Blossom 75s consensus target spacing,
  not 25s; the old assertion conflated it with the harness block-timestamp
  spacing option
- chain_tip_sender_is_updated: ChainTipChange now resets one block before an
  activation height (commit 4434a6c, matching the mempool's next-height
  verification), so the BeforeOverwinter reset moved from height 1 to height 0
- mempool_cancel_downloads_after_network_upgrade /
  mempool_reverifies_after_tip_change: build on a configured testnet that
  activates NU5 at a reachable height, so the committed block crosses a real
  network-upgrade reset boundary under the new next-height semantics
- ensure_timeouts_consistent: update the stale upstream invariants for this
  fork's deliberate SYNC_RESTART_DELAY (operation timeout) / SYNC_RESTART_SLEEP
  (inter-round idle) split
- deny.toml: ignore RUSTSEC-2026-0173 (proc-macro-error2 unmaintained,
  pulled in transitively via getset)
- supply-chain: regenerate cargo-vet exemptions for bumped dependency
  versions (orchard 0.14, zcash_* 0.x, halo2_gadgets 0.5, filetime, tar)
- test-crates.yml: skip the MSRV build for zebra-watchdog, like zebrad it is
  a binary rather than a library and depends on sentry, which requires a newer
  rustc than the workspace library MSRV (1.85.1)
- tests-unit.yml: add a Zakura regtest dual-stack e2e job (ZAKURA_REGTEST_E2E=1,
  host-networked docker compose) and require it through the `test success` gate
@evan-forbes

Copy link
Copy Markdown
Author

Closing: this branch targets the stale feat/p2p-v2 base and its CI is broadly red (MSRV/clippy-beta/test). No longer needed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant