Skip to content

site-deploy: canonical reusable gated+signed deploy workflow#38

Merged
bdelanghe merged 1 commit into
mainfrom
feat/canonical-site-deploy
Jun 29, 2026
Merged

site-deploy: canonical reusable gated+signed deploy workflow#38
bdelanghe merged 1 commit into
mainfrom
feat/canonical-site-deploy

Conversation

@bdelanghe

Copy link
Copy Markdown
Contributor

The canonical home for the deploy pipeline (your org-canonical direction): every bounded-systems site derives one source of truth instead of copy-pasting deploy.yml.

What it is

A workflow_call reusable workflow. A caller builds + keyless-signs its site to an OCI artifact, then:

deploy:
  needs: build
  uses: bounded-systems/.github/.github/workflows/site-deploy.yml@main
  with:
    oci: ${{ needs.build.outputs.oci }}
    domain: https://robertdelanghe.dev
    identity_regexp: ^https://github.com/bdelanghe/site/
  secrets:
    CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }}

What it does

  • preview — pull + cosign-verify the artifact → upload an un-served Cloudflare version → cryptographically verify that version's own stable preview URL. This is the deterministic design: <version>-<worker>.workers.dev serves exactly that version, so there's no edge-propagation race — it retires the retry we needed on the per-site pipeline. A failed verify means no promotion.
  • promote — gated behind the caller's site-promote Environment (required reviewers). On approval, deploy the same reviewed version to 100% prod, then confirm prod routes to it (manifest equality) + an RFC 9110 probe.

The heavy crypto check happens once, deterministically, pre-promotion; promote only proves prod serves the already-verified bytes.

Validation plan

Reusable workflows are callable from a branch, so bdelanghe/site's caller PR will point at @feat/canonical-site-deploy for a real gated test run before this merges to main. Built from the exact green pipeline (bdelanghe/site #162→#167).

🤖 Generated with Claude Code

Extracts the green, proven pipeline from bdelanghe/site into a reusable workflow so
every bounded-systems site derives one source of truth instead of copy-pasting it.

Caller builds + keyless-signs to an OCI artifact, then `uses:` this with the artifact
ref + config (domain, cosign identity regexp). preview pulls + cosign-verifies, uploads
an un-served Cloudflare version, and CRYPTOGRAPHICALLY VERIFIES that version's own stable
preview URL — deterministic, no edge-propagation retry (the fix for the flake we hit on
the per-site pipeline). promote is gated behind the caller's site-promote Environment;
on approval it deploys the same reviewed version and confirms prod routes to it.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@bdelanghe bdelanghe merged commit 54f5856 into main Jun 29, 2026
1 check passed
bdelanghe added a commit to bdelanghe/site that referenced this pull request Jun 29, 2026
#170)

The canonical pipeline is proven green end-to-end, and bounded-systems/.github#38 is
merged. Flip the reusable-workflow ref from the test branch to the merged main SHA
(pinned, per the SHA-pinning convention; `# main` for readability).

Co-authored-by: Robert DeLanghe <oink_monocle_7d@icloud.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant