Despliegues sin fricciones con la GitHub Action de DTZ

created: martes, sept. 23, 2025

Eliminando ciclos desperdiciados en las implementaciones

En DownToZero, estamos comprometidos con eliminar el desperdicio, ya sea en cómputo, energía o sobrecarga operativa. Un desafío que enfrentan muchos equipos en entornos con contenedores es gestionar las actualizaciones de las imágenes de contenedor. Tradicionalmente, los despliegues a menudo dependen del sondeo de actualizaciones cuando se usan etiquetas como latest. Esto conduce a solicitudes innecesarias, mayor latencia para las actualizaciones y un uso ineficiente de los recursos.

Para abordar esto, estamos presentando una nueva forma de integrar despliegues directamente con GitHub Actions. Con la recientemente desarrollada DTZ GitHub Action, las actualizaciones de imágenes de contenedor ahora pueden ser empujadas directamente desde tu pipeline de GitHub hacia DownToZero. Esto significa no más esperas, no más sondeos—solo despliegues inmediatos y simplificados.

De un vistazo

Del commit al despliegue en una sola pasada: construye la imagen, pásala a tu registro de contenedores, resuelve el digest exacto y actualiza el servicio objetivo mediante la GitHub Action de DTZ. Sin sondeos ni ambigüedades—solo lanzamientos precisos basados en digest.

flowchart LR
  subgraph GitHub Actions
    A[Commit / Despacho / Programación]:::action --> B[Construir imagen Docker]:::action
    B --> C[Enviar al registro de contenedores]:::action
    C --> D[Resolver digest de imagen]:::action
    D --> E[Acción DTZ: Actualizar servicio]:::action
  end

  subgraph DownToZero
    R[(Registro de contenedores DTZ)]:::registry
    S[Servicio de contenedores]:::service
  end

  C --> R
  E --> S

  classDef action fill:#fff8e1,stroke:#f9a825,color:#5d4037
  classDef registry fill:#e3f2fd,stroke:#1e88e5,color:#0d47a1
  classDef service fill:#e8f5e9,stroke:#43a047,color:#1b5e20

Cómo funciona

La GitHub Action de DTZ conecta tu workflow de GitHub con tus servicios de contenedores en DownToZero. Una vez que tu pipeline construye y empuja una nueva imagen de contenedor, la action actualiza automáticamente el servicio designado con el digest de la imagen recién construida.

Esto asegura:

Ejemplo de pipeline

Here’s a sample GitHub Actions workflow showing how this integration looks in practice:

on:
  push:
  workflow_dispatch:
  schedule: # scheduled rebuild for security updates
    - cron: '30 5 25 * *'
jobs:
  build-website:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - name: build website
      run: |
        docker build -t ee8h25d0.cr.dtz.dev/sample-website .
    - name: Login to ee8h25d0.cr.dtz.dev
      uses: docker/login-action@v3
      with:
        registry: ee8h25d0.cr.dtz.dev
        username: apikey
        password: ${{ secrets.DTZ_API_KEY }}
    - name: uploading image to ee8h25d0.cr.dtz.dev
      run: |
        docker push ee8h25d0.cr.dtz.dev/sample-website:latest
    - name: Resolve image digest
      id: resolve_digest
      run: |
        DIGEST=$(docker inspect --format='{{index .RepoDigests 0}}' ee8h25d0.cr.dtz.dev/sample-website:latest)
        echo "IMAGE_URL=$DIGEST" >> $GITHUB_ENV
    - name: Deploy latest image to service
      uses: DownToZero-Cloud/containers-service-update@main
      with:
        container_image: ${{ env.IMAGE_URL }}
        container_image_version: ''
        api_key: ${{ secrets.DTZ_API_KEY }}
        service_id: service-0194e6d9
    - name: Publish image URL to summary
      run: |
        echo "## Deployed image" >> $GITHUB_STEP_SUMMARY
        echo "" >> $GITHUB_STEP_SUMMARY
        echo "${IMAGE_URL}" >> $GITHUB_STEP_SUMMARY

This pipeline:

Conclusión

Al integrar la GitHub Action de DTZ en tus pipelines CI/CD, obtienes una forma más rápida, eficiente y consciente de los recursos para gestionar despliegues de contenedores. Este enfoque elimina las suposiciones del sondeo, garantiza despliegues precisos y refleja nuestra misión en DownToZero: eliminar el desperdicio en cada paso.