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.
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
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:
latest – Deployments beziehen sich auf den exakten Image-Digest.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:
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.