Noi di DownToZero ci impegniamo a eliminare gli sprechi - che si tratti di calcolo, energia o sovraccarico operativo. Una sfida che molti team affrontano negli ambienti containerizzati è gestire gli aggiornamenti delle immagini container. Tradizionalmente, le distribuzioni spesso si basano sul polling per gli aggiornamenti quando si usano tag come latest. Questo porta a richieste non necessarie, maggiore latenza negli aggiornamenti e 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 container possono ora essere inviati direttamente dalla tua pipeline GitHub in DownToZero. Questo significa niente più attese, niente più polling—solo distribuzioni immediate e lineari.
Dal commit al deploy in un solo passaggio: builda l’immagine, pushala nel tuo registro 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 / Avvio / Pianificazione]:::action --> B[Costruisci 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 tua pipeline costruisce e push-a una nuova immagine container, l’action aggiorna automaticamente il servizio designato con il digest dell’immagine appena costruita.
Questo garantisce:
latest—le distribuzioni fanno riferimento al digest esatto dell’immagine.Ecco un esempio di workflow di GitHub Actions 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 in DownToZero: rimuovere gli sprechi ad ogni passo.