Distribuzioni senza soluzione di continuità con la DTZ GitHub Action

created: martedì, set 23, 2025

Eliminare i cicli sprecati nelle distribuzioni

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.

A colpo d’occhio

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

Come funziona

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:

Pipeline di esempio

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:

Conclusione

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.