Kukie Infra.11 Ephemeral Runners and Apply on CodeBuild

Kukie Infra.11 Ephemeral Runners and Apply on CodeBuild

Three days after the self-hosted runner went live, the weak point it shipped with turned into an incident — terraform apply moved to a throwaway CodeBuild runner, a leftover review buffer re-posted one PR’s comment into later reviews, the fix that gives every job its own container with a registration token minted by a GitHub App, Claude Code baked into the image after the installer started returning 429, and the docker.sock risk that is still left.

Self-hosted CI
Kukie Infra.09 Self-hosted Actions Runner

Kukie Infra.09 Self-hosted Actions Runner

Moving CI off GitHub-hosted runners after the organization ran out of included minutes — one spot EC2 instance with no inbound access, runners registered with a one-hour token sent over SSM, the key pair and long polling behind every job, the tools the image had to add back, why public repositories stay out, and the weak points that lead to the next post.

Self-hosted CI
Kukie Infra.04 Image Pipeline to ECR

Kukie Infra.04 Image Pipeline to ECR

How a develop merge in each app repo becomes exactly one image in ECR — a role that can push to one repository only, a commit-SHA tag that never moves so the job checks before it builds, a build cache that silently never saved, and a digest a person still copies into the manifest by hand.

GitOps
Kukie Infra.02 IAM Boundaries

Kukie Infra.02 IAM Boundaries

Keeping a deploy robot from growing its own power — short-lived OIDC credentials instead of stored keys, a permissions boundary on every role it creates, permission and creation split into two PRs, and EKS access entries as one line in the cluster’s roster.

IAM