Repository navigation
CD: deliver every signed release to Cloud Run and Firebase Hosting (T11) - #15
Merged
Merged
Conversation
…e and deploy") calls the new `deploy.yml` for a release that is still the newest commit of `main`. What goes out is exactly what the release signed: the server binary and the SPA archive, checked against `SHA256SUMS`. Its cosign signature must come from `release.yml` on `main` for the tag's commit.
|
3 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.



Summary
A green
mainnow reaches prod without hands.release.yml("Release and deploy") calls the newdeploy.ymlfor a release that is still the newest commit ofmain. What goes out is exactly what the release signed: the server binary and the SPA archive, checked againstSHA256SUMS. Its cosign signature must come fromrelease.ymlonmainfor the tag's commit.Changes
deploy.yml:targetpicks the release; a stale one gives a green run with a notice;infrarunsterraform applyin environmentprod;deploybuilds the release image, rolls a revision by digest, sends it all traffic and smoke-tests/health, also inprod;hostingrunsfirebase deployand then checks the served page, inprod-hosting;planposts the plan in the PR's run summary.mainonly;canvas-api-hostingaccount publishes the SPA;projectIamAdmin, limited by an IAM condition to the publisher's two roles.justfile:ci-release-target,ci-release-current,ci-release-fetch,ci-image-push,ci-deploy,ci-smoke,ci-hosting-deploy,ci-hosting-check, and a shared_image-health.Dockerfile: areleasestage that wraps the signed binary in the same distroless runtime.firebase.json:no-cacheon the page, immutable/assets/**, no rewrites.deployment-target,gcloudandfirebase. The Firebase CLI 15.33.0 standalone binary is added to the devcontainer (x86_64).docs/self-hosting.md(delivery, environments, rollback and return); SECURITY.md; README badge; stack; CLAUDE.md; RUN.md.How it was verified
tf-checkruns 16 tests.firebase.jsonandci-hosting-checkwere checked on the Hosting emulator;gcloud.Before merging
prodandprod-hostingexist, with deployment branches limited tomain.TF_VAR_billing_accountis set.just bootstraphas been re-run, and the Terraform identity is bound to:environment:prodand:pull_requestonly.planjob on this PR is green.Merging this PR is the first delivery.
Open