Déploiements transparents avec l'action GitHub DTZ

created: mardi, sept. 23, 2025

Éliminer les cycles gaspillés dans les déploiements

Chez DownToZero, nous nous engageons à éliminer le gaspillage — qu’il s’agisse 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 sondage 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 nouvelle DTZ GitHub Action, les mises à jour d’images de conteneurs peuvent désormais être poussées directement depuis votre pipeline GitHub vers DownToZero. Cela signifie plus d’attente, plus de sondage—des déploiements immédiats et rationalisés.

En un coup d’œil

Du commit au déploiement en un seul passage : construisez l’image, poussez-la vers votre registre de conteneurs, résolvez le digest exact de l’image, et mettez à jour le service cible via l’action DTZ GitHub. Pas de sondage ni d’ambiguïté—seulement 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

Comment ça marche

L’action DTZ GitHub 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

Voici un exemple de workflow GitHub Actions montrant comment cette intégration se présente 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 DTZ GitHub dans vos pipelines CI/CD, vous gagnez une façon plus rapide, plus efficace et plus respectueuse des ressources de gérer les déploiements de conteneurs. Cette approche élimine l’incertitude liée au sondage, garantit des déploiements précis et reflète notre mission chez DownToZero : supprimer le gaspillage à chaque étape.