publish-gate + tuya-bridge ghcr cutover prep (ADR-0002 infra#15)
Some checks failed
ci/woodpecker/push/build-cli Pipeline was successful
ci/woodpecker/push/default Pipeline failed

publish-gate: gitleaks + trufflehog (full history) + PII heuristics;
CLEAN verdict gates any public flip, DIRTY = stays private. tuya-bridge:
ghcr-credentials pull secret + image base -> ghcr; namespace added to
the ghcr-credentials allowlist as a safety net (new ghcr packages
default PRIVATE even from public repos — prune after visibility flip).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Viktor Barzin 2026-06-12 23:12:02 +00:00
parent 54dfaf6edc
commit 6b0d42c7bc
3 changed files with 75 additions and 2 deletions

View file

@ -13,6 +13,10 @@
locals {
ghcr_private_namespaces = [
"tripit",
# tuya-bridge runs a PUBLIC-decision image, but new ghcr packages default
# PRIVATE until their visibility is flipped (UI) safety net so pulls
# work from the first deploy; prune once the package is public.
"tuya-bridge",
"f1-stream",
"job-hunter",
"instagram-poster",

View file

@ -3,7 +3,7 @@ resource "kubernetes_namespace" "tuya-bridge" {
name = "tuya-bridge"
labels = {
"istio-injection" : "disabled"
tier = local.tiers.cluster
tier = local.tiers.cluster
"keel.sh/enrolled" = "true"
}
}
@ -75,8 +75,13 @@ resource "kubernetes_deployment" "tuya-bridge" {
image_pull_secrets {
name = "registry-credentials"
}
# ghcr image (ADR-0002 off-infra builds); secret cloned by the kyverno
# sync-ghcr-credentials policy (safety net while the package is private).
image_pull_secrets {
name = "ghcr-credentials"
}
container {
image = "forgejo.viktorbarzin.me/viktor/tuya_bridge:${var.image_tag}"
image = "ghcr.io/viktorbarzin/tuya_bridge:${var.image_tag}"
image_pull_policy = "IfNotPresent"
name = "tuya-bridge"
port {