Skip to content

Secure CI/CD and Software Supply-Chain Assurance ​

Create a continuous integration and delivery pipeline for your Game of Life implementation. The pipeline should provide automated evidence that a submitted version has been built, tested, analysed, and packaged through an identifiable and repeatable process.

Visual guide: the pipeline at a glance

Two layers work together: repository controls decide what is allowed to be merged, and the pipeline produces automated evidence about each change. You choose which stages to include; the brief lists a menu.

Repository controls
Change proposedpush or pull request
→
Required checkspipeline results
→
Reviewbefore integration
→
Merge to protected branchgate: block merge
Pipeline stages (each leaves evidence)
Build and testtests, results kept
→
Race / static analysisfindings
→
Dependency scanknown vulnerabilities
→
Secret scancommitted credentials
→
SBOMwhat is inside
→
Package artefactversioned
→
Provenancehow it was built
→
Signsignature
→
Verifybefore use
→
Releasegate: block release

Each box should answer a question you can state in the report: what threat or failure does this stage address, and what evidence does it leave behind?

Your pipeline should run when changes are proposed or merged and should include an appropriate selection of the following controls:

  • compilation and automated testing;
  • race, concurrency, or static analysis;
  • dependency and known-vulnerability scanning;
  • checks for accidentally committed credentials or secrets;
  • production of a Software Bill of Materials (SBOM);
  • retention of test and scanning results;
  • creation of a versioned deployment artefact;
  • generation of build provenance; and
  • signing and verification of release artefacts.

Define a security policy that determines which findings should:

  • fail the pipeline immediately;
  • prevent a change from being merged;
  • prevent an artefact from being released;
  • generate a warning requiring review; or
  • be accepted temporarily as a documented exception.
Visual guide: design your policy

For each controlled problem in the brief, decide what your pipeline should do and why. Click a row to see where in the pipeline it should surface. Your choices appear as a table you can copy into your report. The choices are yours to justify; there is no single right answer.

Build and testRace / static analysisDependency scanSecret scanSBOMPackage artefactProvenanceSignVerifyReleaseRepository controls
Controlled problemPolicy outcomeWhy? (and, for exceptions, who approves and when it expires)
A failing test
A concurrency error detectable by your selected tools
A deliberately vulnerable test dependency
A simulated secret in a designated test file
An unsigned or modified build artefact
A change that attempts to bypass the expected review process
6 row(s) still undecided

Configure the repository workflow so that important changes are reviewed before integration. Your design should consider:

  • protected branches;
  • pull-request review;
  • restricted workflow permissions;
  • automated dependency updates; and
  • secure handling of pipeline secrets.
Visual guide: a repository workflow with protected paths
Feature branchDependency update(automated)Pull requestthe only way inMerge conditionsrequired pipeline checks passreview before integrationno direct pushes(who can bypass, if anyone?)Protected mainhistory you can trustVersion tagRelease workflowthe only job that sees signing materialand write permissionsEvery other workflowminimum permissions by default, no access tosecrets, so a malicious change cannot steal them

Ask of each arrow: who or what can use this path, with which permissions, and what stops it being abused? The brief's list (protected branches, review, restricted permissions, automated dependency updates, secret handling) maps to the boxes above.

Demonstrate the operation of the pipeline by introducing a controlled set of problems. These may include:

  • a failing test;
  • a concurrency error detectable by the selected tools;
  • a deliberately vulnerable test dependency;
  • a simulated secret in a designated test file;
  • an unsigned or modified build artefact; and
  • a change that attempts to bypass the expected review process.

Do not introduce real credentials or deploy intentionally vulnerable artefacts to a public or production environment.

For each scenario, record:

  • whether the pipeline detects the problem;
  • where the finding is reported;
  • whether the configured policy permits or blocks the change or release; and
  • how the issue could be remediated.

Verify that a valid signed artefact can be traced to its source revision, and that modifying the artefact causes signature or integrity verification to fail.

Visual guide: from source revision to a verifiable release
Source revisioncommit identifierBuildrepeatable, identifiableArtefactidentified by its digestSBOMwhat is insideProvenancesource + process + inputsSignaturebinds identity to digestVerifytrace back12345A consumer should be able to start from an artefact and walk this chain backwards to the exact source revision.Modify the artefact and its digest no longer matches the signature and provenance: verification should fail.
  1. 1 A malicious change or compromised dependency enters before the build.
  2. 2 The build service itself is compromised, so it builds something other than the source.
  3. 3 The artefact is altered after it is built.
  4. 4 The signing key or an administrator account is compromised.
  5. 5 Verification is skipped, or checks the wrong thing.

Which of these does your design stop, which does it only make detectable, and which remain residual risks? The brief asks you to discuss residual risks such as compromised dependencies, build services and administrator accounts.

Measure the effect of the security checks on the engineering workflow. You may consider:

  • total pipeline duration;
  • time added by individual assurance stages;
  • number and severity of findings;
  • false-positive or unactionable findings;
  • time required to diagnose and remediate a controlled issue; and
  • reproducibility of artefacts across repeated builds.
Visual guide: what do your checks cost?

Enter the time each stage takes (from your pipeline run logs) and mark which are assurance stages. The chart shows where time goes and how much the assurance stages add. The example numbers below are not measurements; replace them with yours.

StageSecondsAssurance stage?
Set-up and checkout
Build
Automated tests
Race detection
Static analysis
Dependency scan
Secret scan
SBOM generation
Package artefact
Provenance and signing
Verification

Enter some times to see the chart.

Time is only one cost. The brief also asks about findings, false positives, time to diagnose and fix, and reproducibility. Consider how you will record those too.

In your report:

  • describe the pipeline stages and the threat or failure each addresses;
  • explain the repository permissions and branching strategy;
  • justify the selected enforcement policy;
  • provide evidence from successful and unsuccessful pipeline executions;
  • trace one controlled vulnerability through discovery, triage, remediation, and verification;
  • explain how provenance and signing support artefact integrity;
  • discuss residual risks, including compromised dependencies, build services, or administrator accounts; and
  • evaluate the balance between assurance, usability, execution time, and developer productivity.
Visual guide: tracing one controlled vulnerability
1 · DiscoveryWhich stage reported it, where, and how soon after the change?
→
2 · TriageIs it real? How severe? What does your policy say should happen?
→
3 · RemediationWhat change fixes it, and who made the decision?
→
4 · VerificationWhat evidence shows the problem is gone and nothing else broke?

Choose one controlled problem and keep screenshots, logs or run links for all four steps. That single worked example is the evidence the brief asks for.

Visual guide: a suggested path through the work
  1. Baseline pipelineBuild and test automatically on every proposed change. Get this green first.
  2. Add analysisRace detection and static analysis. See what they report on your real code.
  3. Add dependency and secret scanningLearn what is actionable and what is noise before you set any policy.
  4. Produce and keep evidenceSBOM, test results and scan results retained for each run.
  5. Create the release artefactVersioned, with provenance, signed, and verified in a separate step.
  6. Lock down the repositoryProtected branches, review, minimal permissions, secret handling, dependency updates.
  7. Write the policyUse the findings from steps 2 to 3 to decide what fails, blocks, warns or is excepted.
  8. Introduce controlled problemsOne at a time, recording detection, location, policy outcome and remediation. Never real secrets, never deploy vulnerable artefacts.
  9. Measure and write upPipeline cost, findings, reproducibility, residual risks and trade-offs.
Report map
Report bulletEvidence to bring
Pipeline stages and the threat each addressesA stage-by-threat table, with the pipeline diagram
Repository permissions and branching strategyYour workflow diagram and the settings that implement it
Enforcement policyThe policy table with a justification for each decision
Successful and unsuccessful pipeline runsRun links or logs for each controlled problem and for a clean run
One vulnerability traced end to endThe four-step trace above
Provenance and signingVerification success, then failure after modifying the artefact
Residual risksThe five numbered risks on the chain-of-custody diagram, with your position on each
Assurance versus productivityCost chart and findings data, with your evaluation