← Workflows

阅读中文版本

Release Compliance Checklist Workflow

Turn regulatory and contractual release obligations into a machine-checked list that blocks shipping rather than reminding people.

intermediate~30 minreleasecompliancegovernance

Objective

Ensure every external obligation (data handling, licensing, audit artifacts) is verifiably met before a release ships.

Environment

  • A compliance requirement list from legal or the regulator
  • CI hooks able to fail builds
  • Owners for each obligation area

Steps

1. Inventory the obligations

Collect every external requirement that attaches to a release: license compatibility, data residency, privacy notices, audit logs, accessibility statements.

Expected state: A single list exists with each obligation, its source, and its owner.

2. Classify checkable versus judgment

Split obligations into machine-checkable items (license scan, header presence, SBOM) and human-judgment items (privacy wording), each with its verification mode.

Expected state: Every item is typed as gate (CI fails) or review (sign-off required).

3. Automate the gates

Implement machine checks in CI: license scan against the allow list, SBOM generation, required headers and notices present, audit log enabled.

Expected state: A build fails with a named obligation when a gate is violated.

4. Route judgments to named reviewers

For human-judgment obligations, require sign-off from the owning role (legal, privacy officer) recorded on the release checklist.

Expected state: The release record contains named approvals for every judgment item.

5. Archive the evidence bundle

On release, bundle the checklist state, gate outputs, and sign-offs into an immutable release record for auditors.

Expected state: An auditor request is answered by pointing at the bundle, not by archaeology.

Expected outcome

A release process where compliance is enforced by failing builds and named sign-offs, producing audit evidence as a by-product of shipping.

Verification

A redacted release bundle shows every obligation with either a passing gate output or a named sign-off, and deliberately breaking a gate in a test build fails CI.

Cleanup

Review obligation list quarterly against contract and regulatory changes.

Compliance that cannot block is a suggestion

A compliance checklist in a wiki reminds people who are busy; the same list wired into CI blocks people who are busy. The workflow converts obligations into gates that fail builds and sign-offs that name humans, then archives the evidence automatically.

release checklist v1.8.0  (compliance view)
GATE  license-scan        PASS   0 unknown, 3 copyleft (allowed)
GATE  sbom-generated       PASS   CycloneDX, 1,204 packages
GATE  privacy-notice       PASS   version 2026-10 present
GATE  audit-log-enabled    PASS   config verified in staging
REVIEW data-residency      SIGNED privacy-officer@ 14:02Z
REVIEW accessibility       SIGNED a11y-lead@ 15:11Z
------------------------------
all obligations met -> release unlocked

bundle: release-v1.8.0-evidence.tar (immutable)

Gates for the mechanical, names for the judgment

License scans and SBOM generation are mechanical and belong in CI where they cannot be forgotten. Data-residency phrasing and accessibility judgments need a human decision, and those decisions must carry a name and timestamp, because that is what an audit actually asks for.

The evidence bundle is the deliverable

Audits conducted after the fact through email archaeology cost days and satisfy nobody. Assembling the evidence during release, as a by-product of gates that already ran, converts the audit answer into a file transfer.