ci: publish scope worker images + register artifacts (manual trigger) - #228
Conversation
|
Revisé el workflow y hay que alinearlo con el patrón que ya usamos en el org para publicar a ECR Public. El molde es nullplatform/scopes-lambda#36 (mergeado, corriendo hoy) — la idea es que este quede igual, fanned out a las 5 imágenes. 1. Usar el reusable en vez de pasos inline
Este repo ya consume reusables en El reusable cubre lo que necesitás: 2. Trigger: tag
|
|
Reescrito para seguir el mold de scopes-lambda#36 — gracias por el detalle. Todo aplicado: 1. Reusable en vez de inline ✅ — cada imagen buildea con 2. Trigger por tag 3. 4. Matrix + outputs ✅ — no uso matrix. Son jobs explícitos por imagen (5 build + 5 register), cada uno como el #36. Cada digest queda atado a su imagen; los overlays 5. Sobre infra (creds/repos del registry/orden de rollout): perfecto, coordinamos el primer tag cuando quieras. Nota: verifiqué local que la base |
null-paorodrigues
left a comment
There was a problem hiding this comment.
Aplicaste los 5 puntos del review anterior — el reusable, el trigger por tag, los jobs explícitos por imagen (con el gotcha del matrix documentado en el header, 👌) y el registro en job aparte. Todo eso queda.
Queda un tema, y es de destino: las imágenes no van a scopes/<name>. Dejé los detalles anclados en las líneas.
Resumen: en ECR el slash forma parte del nombre del repositorio, así que scopes/containers sería un repositorio independiente — y no existe. ECR Public no autocrea repositorios en el push (a diferencia de GHCR o Docker Hub), así que fallaría en vez de crearlo. El repositorio que existe es scopes, donde las imágenes se distinguen por prefijo en el tag: los tags publicados hoy ahí son k8s-0.0.1, k8s-0.0.2, lambda-0.0.1, lambda-0.0.2 (listable sin credenciales, es un registry público).
Los cambios son mecánicos salvo dos que tienen filo: cómo se pasa el tag (comentario en la línea 37) y el FROM de los overlays (comentario en el Dockerfile). Además hay que actualizar el header del archivo (líneas 5-11), que documenta los nombres viejos, y los 5 --repository del np artifact create.
Del lado de las credenciales ya está encaminado y te lo paso por privado.
|
Retiro el review anterior: borré los comentarios inline porque estaban equivocados. El destino que tenés en el PR es el correcto, no lo cambies. Las imágenes van así, un repositorio por imagen: Que es el mismo esquema que Lo que había planteado (un repositorio Lo que sigue en pie del primer review y ya resolviste: el reusable, el trigger por tag, los jobs explícitos por imagen y el registro en job aparte. Eso está bien como quedó. Único punto que queda abierto, menor: el destino está declarado dos veces por imagen — el Los repositorios de ECR todavía no existen (salvo |
… artifacts Manually-verified publish-images workflow (v* tag trigger) that builds each scope worker image via the org reusable ECR workflow and registers it as an oci_image platform artifact (visible-to organization=*), fanned out over the 3 images: containers (k8s base), scheduled-task, containers-datadog (metric overlay). Uses the existing NP_API_KEY secret. Rebased onto beta so the PR carries only the feature (no main-only drift such as the cloudwatch deployment annotations). CHANGELOG: Publish containers and scheduled task scopes as docker images.
3297bdb to
75bc305
Compare
What
A manually-triggered pipeline (Actions → Run workflow) that builds & pushes each scope's worker image to ECR Public and registers it as an oci_image platform artifact (
visible-to organization=*) — the exact scopes-lambda flow, fanned out over this repo.Images
nullplatform/scopes/<name>)containersk8s/worker-bridge+ kubectl, helm, aws, tofu, gomplate, yqscheduled-taskscheduled_task/containers-datadogdatadog/containers-azureazure/containers-azure-aroazure-aro/The containers base bakes the whole repo into
/app/pkg, so the overlays are justFROM containers:<version>+ a flippedNP_OVERRIDES_PATH— no re-copy. That's why theoverlaysjobneeds: bases(base must be pushed first).Trigger
allbuilds the two bases in parallel, then the three overlays. A singlescopebuilds just that one (an overlay assumescontainers:<version>is already published).Required repo config (same as scopes-lambda)
AWS_ROLE_ARN_ECR_PUSH— OIDC role for ECR Public pushARTIFACT_NP_API_KEY— np API key (→NULLPLATFORM_API_KEY)NP_ARTIFACT_NRN— owner NRN for the artifactsVerified
Built the containers base locally (amd64): tofu 1.10.6, kubectl 1.30.4, helm 3.15.4, aws 2.15.57, gomplate — correct
NP_SERVICE_PATH=/app/pkg/k8s+ entrypoint, and datadog/azure/azure-aro all baked in. Confirmed the overlayFROM containers:<v>+NP_OVERRIDES_PATHpattern resolves.Review please
docker/containers.Dockerfile(kubectl/helm/tofu pins) — set to sensible current versions; confirm against what the scopes target.