From 05d1a069f06e02c9395c5488ac2fd4db98a77e35 Mon Sep 17 00:00:00 2001 From: daanpersoons <143718186+daanpersoons@users.noreply.github.com> Date: Tue, 4 Aug 2026 15:52:51 +0200 Subject: [PATCH] k8s rollout: restart deployments by image when no deployments/labels are set --- .github/actions/docker/setup/action.yml | 9 ++------- .github/actions/infra/k8s/rollout/action.yml | 12 ++++++++++++ .github/workflows/docker-build-and-deploy.yml | 1 + .github/workflows/docker-promote-to-environment.yml | 1 + 4 files changed, 16 insertions(+), 7 deletions(-) diff --git a/.github/actions/docker/setup/action.yml b/.github/actions/docker/setup/action.yml index 6766bb8..93a11cd 100644 --- a/.github/actions/docker/setup/action.yml +++ b/.github/actions/docker/setup/action.yml @@ -91,13 +91,8 @@ runs: ;; esac - # Transform K8S labels - if [ -z "${{ inputs.variant-path }}" ]; then - echo "k8s_labels=${{ inputs.k8s-labels }}" >> "$GITHUB_OUTPUT" - else - labels=(${{ inputs.k8s-labels }} variant=${{ inputs.variant-path }}) - echo "k8s_labels=$(IFS=,;echo "${labels[*]}")" >> "$GITHUB_OUTPUT" - fi + # K8S rollout labels + echo "k8s_labels=${{ inputs.k8s-labels }}" >> "$GITHUB_OUTPUT" # Prep. docker environment - name: Checkout if: ${{ inputs.prepare-for-building == 'true' }} diff --git a/.github/actions/infra/k8s/rollout/action.yml b/.github/actions/infra/k8s/rollout/action.yml index 48845d2..57b2e0f 100644 --- a/.github/actions/infra/k8s/rollout/action.yml +++ b/.github/actions/infra/k8s/rollout/action.yml @@ -14,6 +14,9 @@ inputs: rollout-labels: description: List of labels to rollout (comma separated) required: false + rollout-image: + description: Image reference without tag; restarts deployments running this image + required: false rollout-namespace: description: Rollout namespace filter required: true @@ -79,6 +82,7 @@ runs: env: DEPLOYMENTS: ${{ inputs.rollout-deployments }} LABELS: ${{ inputs.rollout-labels }} + IMAGE: ${{ inputs.rollout-image }} run: | # Restart multiple deployments if [ -n "$DEPLOYMENTS" ]; then @@ -94,6 +98,14 @@ runs: --selector="$LABELS" \ --namespace="${{ inputs.rollout-namespace }}" + # Restart deployments running the image + elif [ -n "$IMAGE" ]; then + kubectl get deployment \ + --namespace="${{ inputs.rollout-namespace }}" -o json \ + | jq -r --arg img "$IMAGE" '.items[] | select(any(.spec.template.spec.containers[]; .image | startswith($img + ":"))) | .metadata.name' \ + | xargs -r kubectl rollout restart deployment \ + --namespace="${{ inputs.rollout-namespace }}" + # Restart everything else kubectl rollout restart deployment \ diff --git a/.github/workflows/docker-build-and-deploy.yml b/.github/workflows/docker-build-and-deploy.yml index df76e2d..c579850 100644 --- a/.github/workflows/docker-build-and-deploy.yml +++ b/.github/workflows/docker-build-and-deploy.yml @@ -158,6 +158,7 @@ jobs: cluster-id: ${{ vars.K8S_CLUSTER_ID }} rollout-deployments: ${{ vars.K8S_DEPLOYMENTS }} rollout-labels: ${{ steps.setup.outputs.k8s-labels }} + rollout-image: ${{ steps.setup.outputs.registry }}/${{ steps.setup.outputs.image }} rollout-namespace: ${{ vars.K8S_NAMESPACE }} # Vendor: azure azure-client-id: ${{ secrets.AZURE_CLIENT_ID }} diff --git a/.github/workflows/docker-promote-to-environment.yml b/.github/workflows/docker-promote-to-environment.yml index fbeaba1..bfa000b 100644 --- a/.github/workflows/docker-promote-to-environment.yml +++ b/.github/workflows/docker-promote-to-environment.yml @@ -178,6 +178,7 @@ jobs: cluster-id: ${{ vars.K8S_CLUSTER_ID }} rollout-deployments: ${{ vars.K8S_DEPLOYMENTS }} rollout-labels: ${{ steps.setup.outputs.k8s-labels }} + rollout-image: ${{ steps.setup.outputs.registry }}/${{ steps.setup.outputs.image }} rollout-namespace: ${{ vars.K8S_NAMESPACE }} # Vendor: azure azure-client-id: ${{ secrets.AZURE_CLIENT_ID }}