feat(ci): build+push the worker image and register its artifact on release - #5
Merged
Conversation
…lease Same pipeline as services-s-3: release-please -> docker build+push to public.ecr.aws/nullplatform/services/dynamodb -> oci_image artifact registered by tag -> release finalized with the artifact metadata. The Dockerfile builds on worker-bridge 1.0.0 with aws-cli, gomplate and OpenTofu 1.10 (use_lockfile=true needs 1.10+), bakes the service under /app/pkg/dynamodb and points the bridge at its entrypoint.
sebastiancorrea81
approved these changes
Sep 9, 2026
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.
Qué es esto
Lleva
services-dynamo-dbal mismo modelo queservices-s-3(#20 de ese repo): en cada release se construye una imagen de worker, se publica enpublic.ecr.aws/nullplatform/services/dynamo-db:<tag>y se registra como artifactoci_imageen nullplatform, con el tag como referencia.Con eso una instalación puede correr el servicio como worker (
package-exec) en lugar de clonar el repo dentro del pod del agent: el package pinea la imagen, el agent la levanta cuando llega una acción y la apaga cuando queda ociosa.Qué cambia
Dockerfile, copia del de s3 con los paths de este servicio. Baseworker-bridge:1.0.0, másaws-cliygomplatede apk y OpenTofu 1.10.10 (el backend S3 del servicio usause_lockfile=true, que necesita tofu 1.10+; alpine solo trae 1.7). Hornea el repo en/app/pkgy dejaNP_PACKAGE_NAME=dynamodb,NP_SERVICE_PATH=/app/pkg/dynamodbyNP_SCOPE_ENTRYPOINT=/app/pkg/dynamodb/entrypoint/entrypoint. Los scripts del servicio solo llaman aaws,tofu,jq,npycurl, todos presentes..github/workflows/release.yml: pasa derelease.ymlarelease-publish-oci.ymlde actions-nullplatform conimage_name: services/dynamo-db, igual que s3. Sumaid-token: writepara el push a ECR por OIDC y elworkflow_dispatchconexisting_tagpara publicar un tag ya existente si un release falla a mitad..trivyignore: suprimeAVD-DS-0002(la imagen corre como root porque la base worker-bridge lo hace; el usuario lo gobierna el securityContext del pod del worker), con el mismo texto que en s3.Verificado
Imagen construida localmente desde este branch:
tofu1.10.10,aws-cli2.15.57,gomplate3.11.7,jq1.7.1 ynppresentes, entrypoint ejecutable en la ruta que declaraNP_SCOPE_ENTRYPOINT.Antes de cortar el primer release
El workflow hace login y push a ECR pero no crea el repositorio:
services/dynamo-dbya existe en ECR Public de nullplatform.AWS_ROLE_ARN_ECR_PUSHestá en el repo;ARTIFACT_NP_API_KEYyNP_ARTIFACT_NRNllegan desde la organización.