Skip to main content

Core Concepts

zCICD uses a handful of terms consistently. Learning these six is enough to understand everything else in this documentation.

Repository

A Repository is the link between zCICD and one external Git repository.

You configure it once with an SSH URL and credentials. After that zCICD can authenticate itself, fetch new commits and branches on its own, and decide what to do when something new appears. Several repositories can be connected to the same zCICD instance and managed side by side.

See Repositories.

Branch

A Branch in zCICD mirrors a branch in your Git repository. zCICD discovers branches by fetching the repository — you never create them here, you create them in Git and zCICD picks them up.

A branch carries the things a CI system needs to know that Git does not track: which release it is targeted at, who has to approve it, whether it is blocked, what the end-user-facing summary of the change is, and which ticket it belongs to.

Every branch has a state, which moves roughly in this order:

StateMeaning
DevBeing worked on
To ApproveWaiting for someone to approve the change
Review CodeUnder code review
DeclinedRejected by a reviewer
TestableReady to be tested
TestedTests have passed
BlockedHeld back deliberately
Merge ConflictCannot be merged as-is
CandidatePicked up for an upcoming release
ReleasePart of a release
DoneFinished
CancelAbandoned

The state is computed by zCICD from what has actually happened to the branch, rather than set by hand.

Instance

An Instance is the running Odoo system belonging to a branch — the containers, the database and the filestore.

The distinction matters: the branch is the record and the workflow, the instance is the machine that runs it. A branch can have more than one instance, and an instance can be thrown away and rebuilt without losing the branch.

Instances appear under two menus: Dev for development instances, and Prod for production ones.

Task

A Task is one unit of work zCICD performs on an instance — building it, restoring a dump, updating modules, restarting containers.

Tasks run in the background as queue jobs, so pressing a button does not block your browser. Anything that takes real time shows up as a task you can watch, and the branch's Tasks tab is the first place to look when something did not happen.

Test Run

A Test Run is one execution of the test suite against a branch.

zCICD supports several kinds of test in the same run:

  • unit tests — Odoo's own test framework
  • robot tests — browser-driven acceptance tests
  • migration tests — verifying that an existing database survives the update

Rather than running everything on every commit, zCICD analyses which modules the commit touches and runs only the tests that can be affected by it. This is the single biggest time saver in the system.

Release

A Release collects finished branches and deploys them to a target system.

Branches that are ready become release items. The release then applies them together, so production receives one coherent change set rather than a stream of individual merges.

Supporting objects

These appear in the menus and are worth recognising, but you can ignore them until you need them:

ObjectWhat it is
DumpA database backup file, optionally anonymised
CompressorA scheduled job that turns a large production dump into a smaller, anonymised one for development use
MachineA server zCICD can run instances on
RegistryA Docker registry that built images are pushed to and pulled from
Postgres ServerA database server available to instances
Ticket SystemA Jira or similar system that branches can be linked to
ScheduleA recurring job definition
EpicA grouping of related branches
Branch TypeA classification (feature, hotfix, …) that can drive behaviour