21.4 C
San Juan
Sunday, March 8, 2026

Making Zebra Extra Accessible: Main CI/CD Enhancements for Contributors


Over the previous a number of months, we’ve made important modifications to Zebra’s steady integration and testing infrastructure. For these new to the mission, Zebra is the Zcash Basis’s full-node implementation written in Rust, offering an unbiased, memory-safe, and consensus-compatible various to zcashd.

These enhancements make it simpler for anybody to fork the repository, check their modifications, and contribute to the mission—with out counting on exterior providers or particular permissions.

Why These Modifications Matter

Beforehand, contributing to Zebra meant coping with a number of roadblocks:

  • Forked repositories couldn’t run most CI exams as a result of they trusted Firebase, exterior Docker registries, and different providers that contributors didn’t have entry to
  • Check builds had been gradual and generally rebuilt unnecessarily
  • Complicated configuration made it laborious to grasp which exams had been operating and why
  • Exterior dependencies added prices and made the CI fragile

We’ve systematically addressed every of those points.

What We’ve Improved

Now we have made 5 notable enhancements:

1. CI Now Works on Forks

The largest change: should you fork Zebra, the CI simply works. We eliminated all dependencies on exterior providers that required particular entry:

  • Documentation now deploys to GitHub Pages as a substitute of Firebase
  • All workflows run on customary GitHub infrastructure
  • Docker photographs construct immediately in GitHub Actions, now not requiring Google Cloud Platform or Docker Construct Cloud
  • Eliminated 19 patch recordsdata and a couple of,900 traces of configuration complexity

We additionally made Zebra’s inside workflows simpler to establish by including a zfnd- prefix, so it’s clear which workflows are particular to the Zcash Basis’s infrastructure and which of them will work in your fork.

See our CI/CD structure documentation →

2. Sooner, Extra Dependable Exams with Nextest

We migrated Zebra’s total check suite to make use of cargo-nextest, a contemporary check runner that provides a number of benefits:

  • Sooner execution: Exams run in parallel with smarter scheduling
  • Higher reliability: Correct timeout dealing with prevents false failures
  • Clearer configuration: All 17 check profiles are outlined in .config/nextest.toml as a substitute of scattered throughout shell scripts
  • Less complicated workflows: One NEXTEST_PROFILE variable replaces dozens of atmosphere flags

This transformation eradicated pointless rebuilds brought on by function flag mismatches and streamlined how we run various kinds of exams (full sync, RPC exams, lightwalletd integration, and so on.).

See our nextest profiles and check classes →

3. Eliminated Exterior Construct Dependencies

We used to depend on exterior providers to construct Docker photographs as a result of the builds had been resource-intensive. This created two issues:

  • Contributors couldn’t construct photographs of their forks
  • It incurred in important prices

Now, Docker photographs construct solely inside GitHub Actions utilizing customary infrastructure. We made the builder configurable, so should you fork Zebra, your photographs will construct robotically with none particular setup.

The workflow additionally adapts to your atmosphere—it makes use of customary GitHub runners in forks and bigger runners in the principle repository, so contributors aren’t blocked by runner dimension limitations.

Be taught extra about our Docker setup →

4. Streamlined Testing and Deployment

We simplified how exams are organized and run:

  • Single unified workflow: As an alternative of constructing Docker photographs a number of occasions throughout totally different workflows, we construct as soon as and reuse it for all exams.
  • Constant naming: Standardized check names throughout GitHub workflows, atmosphere variables, and Rust code makes it simpler to hint failures and perceive what’s being examined.
  • Simplified GCP integration: For exams that do run on Google Cloud Platform (in the principle repository), we eliminated the intermediate container layer and use direct occasion creation, which improves reliability and logging.

See our workflow group →5. Higher Configuration Administration

We changed the legacy configuration system with a contemporary layered method:

  • Configure Zebra utilizing ZEBRA_ prefixed atmosphere variables with no need a generated config file
  • Simplified Docker entrypoint that doesn’t have to generate TOML recordsdata
  • Clearer separation between defaults, optionally available TOML recordsdata, and atmosphere overrides

This makes it simpler to check totally different configurations and reduces the complexity of the Docker entrypoint script.

See the configuration documentation →

What This Means for You

Whether or not you’re a contributor, a group member operating your personal Zebra node, or a company constructing on prime of Zebra:

  • Fork and check freely: You possibly can fork Zebra and run the total CI suite in your personal repository
  • Sooner suggestions: Exams run quicker and extra reliably, so that you get faster suggestions on modifications
  • Simpler debugging: Clearer check names and higher logging make it easier to grasp what went fallacious when a check fails
  • Decrease obstacles to entry: New contributors don’t want to grasp advanced exterior dependencies or request entry to particular providers

What’s Subsequent

We’re not achieved but. The enhancements we’ve made up to now lay the groundwork for much more important modifications coming quickly:

Smarter Check Choice

We’re re-architecting how exams are organized and run so you may select precisely what to check based mostly in your wants:

  • Run by check kind: Choose simply unit exams, integration exams, or stateful exams (exams that require a cached blockchain state)
  • Run by high quality degree: Select between fast smoke exams and complete check suites
  • Run what issues: In the event you’re engaged on RPC performance, run simply the RPC exams. Engaged on sync logic? Run solely sync-related exams.

It will make the event cycle quicker—you received’t want to attend for your entire check suite once you’re solely altering a selected part.

Regtest for Sooner, Extra Dependable Testing

We’re contemplating a shift to utilizing regtest (regression check mode—a neighborhood testing atmosphere the place blocks will be generated on demand) as a substitute of counting on mainnet or testnet for advanced integration exams:

  • No sync wait occasions: Exams received’t want to attend for lengthy mainnet syncs to finish earlier than operating
  • Predictable check environments: Create customized blockchain states on demand relatively than relying on community state
  • Sooner iteration: Run advanced community interactions with out the overhead of full blockchain synchronization

This transformation would make our stateful exams considerably quicker and extra dependable, particularly for testing advanced interactions between Zebra and the community.

Workflow Modernization

We’re persevering with to refactor our remaining specialised workflows, simplifying our infra-related deployment workflows

These modifications will comply with the identical ideas: scale back complexity, take away exterior dependencies the place potential, and make every thing work seamlessly in forks.

Steady Enchancment

The work we’ve accomplished over the previous few months demonstrates our dedication to creating Zebra simpler to work with. We’ll proceed to establish bottlenecks, simplify workflows, and enhance the contributor expertise.

Get Began!

All of those enhancements are already dwell in the principle department. In the event you’ve been enthusiastic about contributing to Zebra, or should you beforehand had hassle operating exams in your fork, now is a good time to offer it one other strive.

To get began:

 


 

Questions or suggestions? We’d love to listen to about your expertise with the brand new CI setup. Tell us in Discord or open a problem within the Zebra repository.

The Zcash Basis is dedicated to transparency and openness with the Zcash group. We’ll proceed sharing updates on our engineering work and welcome your suggestions and contributions.

Related Articles

Stay Connected

0FansLike
0FollowersFollow
0SubscribersSubscribe
- Advertisement -spot_img

Latest Articles