Seamless Deployments with the DTZ GitHub Action

created: martes, sept 23, 2025

Eliminando ciclos desperdiciados en el despliegue

En DownToZero, estamos comprometidos con eliminar el desperdicio, ya sea en cómputo, energía u overhead operativo. Un desafío que enfrentan muchos equipos en entornos containerizados es manejar las actualizaciones de las imágenes de contenedor. Tradicionalmente, las implementaciones a menudo dependen de sondear en busca de actualizaciones cuando se usan etiquetas como latest. Esto provoca solicitudes innecesarias, mayor latencia en 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 nada de esperas, nada de sondeos: solo despliegues inmediatos y optimizados.

De un vistazo

Desde el commit hasta el despliegue en una sola pasada: construye la imagen, púshala a tu registro de contenedores, resuelve el digest exacto de la imagen y actualiza el servicio objetivo mediante la DTZ GitHub Action. Sin sondeos ni ambigüedad: solo releases precisos basados en digest.

flowchart LR
  subgraph GitHub Actions
    A[Commit / Dispatch / Schedule]:::action --> B[Build Docker Image]:::action
    B --> C[Push to Container Registry]:::action
    C --> D[Resolve Image Digest]:::action
    D --> E[DTZ Action: Update Service]:::action
  end

  subgraph DownToZero
    R[(DTZ Container Registry)]:::registry
    S[Container Service]:::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 DTZ GitHub Action 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 acción actualiza automáticamente el servicio designado con el digest de la imagen recién construida.

Esto garantiza:

Sample 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:

Conclusion

By integrating the DTZ GitHub Action into your CI/CD pipelines, you gain a faster, more efficient, and resource-conscious way to manage container deployments. This approach removes the guesswork of polling, ensures precise deployments, and reflects our mission at DownToZero: removing waste at every step.