Déploiements fluides avec l'action GitHub DTZ

created: mardi, sept. 23, 2025

Éliminer les cycles gaspillés lors des déploiements

Chez DownToZero, nous nous engageons à éliminer le gaspillage - qu’il s’agisse de puissance de calcul, d’énergie, ou de surcharge opérationnelle. Un défi auquel de nombreuses équipes sont confrontées dans les environnements conteneurisés est la gestion des mises à jour des images de conteneurs. Traditionnellement, les déploiements reposent souvent sur le polling des mises à jour lorsqu’on utilise des tags comme latest. Cela entraîne des requêtes inutiles, une latence accrue pour les mises à jour et une utilisation inefficace des ressources.

Pour y remédier, nous introduisons une nouvelle façon d’intégrer les déploiements directement avec GitHub Actions. Avec la DTZ GitHub Action récemment développée, les mises à jour d’images de conteneurs peuvent désormais être poussées directement depuis votre pipeline GitHub vers DownToZero. Fini l’attente, fini le polling—juste des déploiements immédiats et rationalisés.

En un coup d’œil

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 polling ni d’ambiguïté—juste des versions précises basées sur le digest.

flowchart LR
  subgraph GitHub Actions
    A[Commit / Déclenchement / Planification]:::action --> B[Construire l'image Docker]:::action
    B --> C[Pousser vers le registre de conteneurs]:::action
    C --> D[Résoudre le digest de l'image]:::action
    D --> E[Action DTZ : Mettre à jour le service]:::action
  end

  subgraph DownToZero
    R[(Registre de conteneurs DTZ)]:::registry
    S[Service de conteneur]:::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

Comment ça marche

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

Cela garantit :

Exemple 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

Ce pipeline :

Conclusion

En intégrant l’action GitHub DTZ dans vos pipelines CI/CD, vous obtenez une manière plus rapide, plus efficace et plus respectueuse des ressources pour gérer les déploiements de conteneurs. Cette approche supprime l’incertitude liée au polling, garantit des déploiements précis et reflète notre mission chez DownToZero : supprimer le gaspillage à chaque étape.