Apply Dedalus CI/CD workflow rules for runner placement, Docker build verification, artifact publication, and self-hosted runner orchestration. Use when editing GitHub Actions workflows, Docker build pipelines, deploy jobs, Terraform/ECS/Flux workflows, or self-hosted runner automation.
Do not handwrite new GitHub Actions workflow YAML. Author or edit the Hollywood TypeScript source, then regenerate .github/workflows/*.yml.
Default workflow flow:
ci/ and export a Hollywood workflow(...) object.pnpm exec hollywood generate "ci/**/*.ts" --output ..# @generated by Hollywood. Do not edit by hand.Existing handwritten workflows are legacy precedent, not permission to add more handwritten YAML. When touching a legacy workflow for substantial behavioral changes, prefer moving that workflow behind Hollywood in the same PR or split the generator migration into a preparatory PR.
Choose the cheapest runner that matches the job's real bottleneck.
ubuntu-24.04Use for I/O-bound or orchestration-heavy jobs:
blacksmith-4vcpu-ubuntu-2404Use for compute-bound jobs:
Use only when GitHub-hosted runners cannot do the job:
If the job is only provisioning or cleaning up the self-hosted runner, run that control job on ubuntu-24.04. Only the payload belongs on self-hosted.
Every deployable image must be built in CI with push: false.
Rules:
push: falseAfter merge, CD may build and publish the application image for the merged commit.
Current repo rule:
If you later refactor a service toward true build-once/deploy-later, keep the same invariant: no unreviewed artifact is written to ECR.
Prefer these shapes:
verify-build in CIpublish in CDdeploy/apply in CDSplit build from deploy when runner classes differ. A pure Terraform/ECS apply job should not stay on Blacksmith just because the build job in the same workflow needs it.
Use reusable workflows for generic behavior. Use service-specific wrapper workflows when a service needs custom setup such as:
Prefer server-side runner registration when the platform supports it.
For GitHub Actions runners:
After editing workflows:
pnpm exec hollywood generate "ci/**/*.ts" --output .actionlintubuntu-24.04push: false