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.
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
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 :
latest—les déploiements référencent le digest exact de l’image.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 :
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.