Distribuzioni senza interruzioni con la DTZ GitHub Action

created: martedì, set 23, 2025

Eliminare cicli inutili nelle distribuzioni

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.

A colpo d’occhio

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

Come funziona

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:

Esempio di pipeline

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:

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 in DownToZero: rimuovere gli sprechi ad ogni passo.