Deployments senza interruzioni con il DTZ GitHub Action

created: martedì, set 23, 2025

Eliminating Wasted Cycles in Deployment

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.

At a glance

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

How It Works

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:

Sample Pipeline

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:

Conclusion

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.