Déploiements fluides avec l'action GitHub DTZ

created: mardi, sept. 23, 2025

Eliminating Wasted Cycles in Deployment

Chez DownToZero, nous nous engageons à éliminer les gaspillages - qu’il s’agisse de calcul, d’énergie ou de surcharge opérationnelle. Un défi auquel beaucoup d’équipes font face dans les environnements conteneurisés est la gestion des mises à jour des images conteneurs. Traditionnellement, les déploiements reposent souvent sur le sondage des mises à jour lorsque des tags comme latest sont utilisés. Cela engendre des requêtes inutiles, une latence accrue pour les mises à jour, et une utilisation inefficace des ressources.

Pour y remédier, nous introduisons un nouveau moyen d’intégrer les déploiements directement avec GitHub Actions. Avec la nouvelle action GitHub DTZ, les mises à jour des images conteneurs peuvent désormais être poussées directement depuis votre pipeline GitHub vers DownToZero. Cela signifie plus d’attente, plus de sondage—juste des déploiements immédiats et simplifiés.

At a glance

Du commit au déploiement en une seule passe : construisez l’image, poussez-la vers votre registre de conteneurs, résolvez le digest exact, et mettez à jour le service cible via l’action GitHub DTZ. Pas de sondage ni d’ambiguïté—juste des releases précises basées sur le 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

How It Works

L’action GitHub DTZ connecte votre workflow GitHub à vos services conteneurs DownToZero. Une fois que votre pipeline construit et pousse une nouvelle image conteneur, l’action met automatiquement à jour le service désigné avec le digest fraîchement construit de l’image.

Cela garantit :

Sample Pipeline

Voici un exemple de workflow GitHub Actions montrant comment cette intégration fonctionne en pratique :

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

Ce pipeline :

Conclusion

En intégrant l’action GitHub DTZ dans vos pipelines CI/CD, vous bénéficiez d’une manière plus rapide, efficace et économe en ressources de gérer les déploiements de conteneurs. Cette approche élimine les conjectures liées au sondage, assure des déploiements précis, et reflète notre mission chez DownToZero : éliminer le gaspillage à chaque étape.