Nahtlose Deployments mit der DTZ GitHub Action

created: Dienstag, Sept. 23, 2025

Eliminating Wasted Cycles in Deployment

Bei DownToZero sind wir dem Ziel verpflichtet, Verschwendung zu beseitigen – sei es bei Rechenressourcen, Energie oder Betriebskosten. Eine Herausforderung, der viele Teams in containerisierten Umgebungen begegnen, ist die Handhabung von Updates für Container-Images. Traditionell basieren Deployments häufig auf Polling nach Updates, wenn Tags wie latest verwendet werden. Das führt zu unnötigen Anfragen, erhöhter Latenz bei Updates und ineffizienter Ressourcennutzung.

Um dem zu begegnen, führen wir eine neue Methode zur direkten Integration von Deployments mit GitHub Actions ein. Mit der neu entwickelten DTZ GitHub Action können Container-Image-Updates jetzt direkt aus Ihrer GitHub-Pipeline in DownToZero gepusht werden. Das bedeutet kein Warten mehr, kein Polling – nur noch sofortige, schlanke Deployments.

At a glance

Vom Commit zum Deployment in einem Schritt: Image bauen, in das Container-Registry pushen, den genauen Digest ermitteln und den Ziel-Service über die DTZ GitHub Action aktualisieren. Kein Polling oder Unsicherheiten – nur präzise, digest-basierte Releases.

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

Die DTZ GitHub Action verbindet Ihren GitHub-Workflow mit Ihren DownToZero Container-Services. Sobald Ihre Pipeline ein neues Container-Image baut und pusht, aktualisiert die Action automatisch den vorgesehenen Service mit dem frisch gebauten Image-Digest.

Das gewährleistet:

Sample Pipeline

Hier ein Beispiel für einen GitHub Actions Workflow, der diese Integration in der Praxis zeigt:

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

Diese Pipeline:

Conclusion

Durch die Integration der DTZ GitHub Action in Ihre CI/CD-Pipelines erhalten Sie eine schnellere, effizientere und ressourcenbewusste Methode zur Verwaltung von Container-Deployments. Dieser Ansatz beseitigt das Polling-Rätsel, gewährleistet präzise Deployments und spiegelt unsere Mission bei DownToZero wider: Verschwendung in jedem Schritt zu eliminieren.