GitLab CI — Cassian Gate gate template
This document describes a GitLab CI pattern for running Cassian Gate as a deterministic, clean-state validation gate.
It is a supporting CI guide. It does not replace deterministic execution, authoritative artifacts, or the project design contract.
What this pipeline is for
Use this pattern when you want a GitLab pipeline to:
- validate topology input before execution
- run the authoritative gate with
cassian test - preserve generated artifacts for audit and debugging
- avoid treating exploratory workflows as deployment authority
What this pipeline is not
This pipeline is not:
- a broad CI automation framework
- a substitute for the Cassian Gate authority model
- a reason to treat
cassian runas a gate - a promise that every GitLab runner shape supports containerlab reliably
Authority rules
Keep these boundaries explicit:
- authoritative gate execution runs through
cassian test <topology.yaml> cassian runremains exploratory and non-authoritativeresults.jsonremains the authoritative verdict artifactresults.summary.txtremains explanatory onlylabs/remains generated evidence only
Runner requirements
A practical GitLab runner for current Cassian Gate usage typically needs:
- Linux host or runner
- Docker available to the runner
containerlabinstalled ahead of time- sufficient privileges for containerlab networking
A shell executor on a Linux host is often the simplest fit.
If you use another runner model, keep the required runtime privileges explicit and review them carefully.
Typical CI shape
A narrow, truthful pipeline usually looks like this:
- install pinned Python dependencies
- run repository verification or syntax checks as needed
- validate the topology
- run the authoritative gate with
cassian test - upload generated artifacts for review
Example local reproduction
From repo root:
This keeps CI aligned to the authoritative gate surface.
Example artifact upload set
Typical artifact upload choices include:
labs/**/results.jsonlabs/**/results.summary.txtlabs/**/topology.resolved.yamllabs/**/artifacts/**
If your storage policy allows it, you may also retain the broader labs/** directory on failure
for debugging.
Important boundary
This page is supporting guidance only.
Deploy/no-deploy meaning still comes from:
- deterministic execution
cassian test- authoritative generated artifacts, especially
results.json