In DownToZero, ci impegniamo a eliminare gli sprechi - sia nel calcolo, nell’energia o nel sovraccarico operativo. Una sfida che molti team affrontano negli ambienti containerizzati è la gestione degli aggiornamenti delle immagini dei container. Tradizionalmente, le distribuzioni spesso si basano sul polling per aggiornamenti utilizzando tag come latest. Questo porta a richieste non necessarie, aumento della latenza negli aggiornamenti e uso inefficiente delle risorse.
Per affrontare questo, stiamo introducendo un nuovo modo per integrare le distribuzioni direttamente con GitHub Actions. Con il recentemente sviluppato DTZ GitHub Action, gli aggiornamenti delle immagini dei container possono ora essere inviati direttamente dalla tua pipeline GitHub a DownToZero. Questo significa niente più attese, niente più polling – solo distribuzioni immediate e ottimizzate.
Dal commit al deploy in un solo passaggio: costruisci l’immagine, inviala al tuo registry container, risolvi il digest esatto e aggiorna il servizio target tramite il DTZ GitHub Action. Niente polling o ambiguità – solo rilasci precisi basati sul 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
Il DTZ GitHub Action collega il tuo workflow GitHub ai servizi container di DownToZero. Una volta che la pipeline costruisce e invia una nuova immagine del container, l’azione aggiorna automaticamente il servizio designato con il digest dell’immagine appena costruita.
Questo garantisce:
latest – le distribuzioni fanno riferimento al digest preciso dell’immagine.Ecco un esempio di workflow GitHub Actions che mostra come appare questa integrazione in pratica:
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
Questa pipeline:
Integrando il DTZ GitHub Action nelle tue pipeline CI/CD, ottieni un modo più veloce, efficiente e attento alle risorse per gestire le distribuzioni dei container. Questo approccio elimina l’incertezza del polling, garantisce distribuzioni precise e riflette la nostra missione in DownToZero: rimuovere gli sprechi a ogni passo.