Da DownToZero, siamo impegnati a eliminare gli sprechi — che si tratti di risorse di calcolo, energia o sovraccarico operativo. Una delle sfide che molti team affrontano negli ambienti containerizzati è gestire gli aggiornamenti delle immagini dei container. Tradizionalmente, le distribuzioni spesso si basano sul polling per gli aggiornamenti quando si usano tag come latest. Questo genera richieste non necessarie, aumenta la latenza per gli aggiornamenti e comporta un uso inefficiente delle risorse.
Per affrontare questo problema, stiamo introducendo un nuovo modo di integrare le distribuzioni direttamente con GitHub Actions. Con la nuova 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 snellite.
Dal commit alla distribuzione in un solo passaggio: costruisci l’immagine, esegui il push al tuo registry dei container, risolvi il digest esatto e aggiorna il servizio target tramite la DTZ GitHub Action. Niente polling o ambiguità—solo rilasci precisi basati sul digest.
flowchart LR
subgraph GitHub Actions
A[Commit / Dispatch / Pianificazione]:::action --> B[Build immagine Docker]:::action
B --> C[Push al registro dei container]:::action
C --> D[Risolvi il digest dell'immagine]:::action
D --> E[DTZ Action: Aggiorna servizio]:::action
end
subgraph DownToZero
R[(Registro container DTZ)]:::registry
S[Servizio container]:::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
La 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’action aggiorna automaticamente il servizio designato con il digest dell’immagine appena costruita.
Questo assicura:
latest—le distribuzioni fanno riferimento al digest esatto dell’immagine.Ecco un workflow di GitHub Actions di esempio che mostra come appare questa integrazione nella 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 la 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 a DownToZero: eliminare gli sprechi ad ogni passo.