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