From 18483c89785635e1d9905d801c0eafa142af8099 Mon Sep 17 00:00:00 2001 From: cialloo Date: Sat, 4 Oct 2025 23:26:26 +0800 Subject: [PATCH] Add force restart option to deployment workflow and script --- .github/workflows/cd.yml | 6 ++++++ script/cd.sh | 9 +++++++++ 2 files changed, 15 insertions(+) diff --git a/.github/workflows/cd.yml b/.github/workflows/cd.yml index b503262..1f60d9c 100644 --- a/.github/workflows/cd.yml +++ b/.github/workflows/cd.yml @@ -23,6 +23,11 @@ on: required: false default: '' type: string + force_restart: + description: 'Force rollout restart (restarts pods even if no changes)' + required: false + default: true + type: boolean # Environment variables available to all jobs env: @@ -39,6 +44,7 @@ env: CONTAINER_REGISTRY_PASSWORD: ${{ secrets.CONTAINER_REGISTRY_PASSWORD }} CONTAINER_IMAGE_NAME: ${{ secrets.CONTAINER_IMAGE_NAME }} CONTAINER_IMAGE_TAG: ${{ inputs.image_tag || 'latest' }} + FORCE_RESTART: ${{ inputs.force_restart }} jobs: deploy: diff --git a/script/cd.sh b/script/cd.sh index 27eb509..87cc6d4 100644 --- a/script/cd.sh +++ b/script/cd.sh @@ -20,6 +20,7 @@ CONTAINER_REGISTRY_NAMESPACE="${CONTAINER_REGISTRY_NAMESPACE:-username}" CONTAINER_REGISTRY_PASSWORD="${CONTAINER_REGISTRY_PASSWORD:-password}" CONTAINER_IMAGE_NAME="${CONTAINER_IMAGE_NAME:-image-name}" CONTAINER_IMAGE_TAG="${CONTAINER_IMAGE_TAG:-latest}" +FORCE_RESTART="${FORCE_RESTART:-true}" # ============================================================================= # Functions @@ -46,6 +47,7 @@ print_help() { echo " CONTAINER_REGISTRY_PASSWORD" echo " CONTAINER_IMAGE_NAME" echo " CONTAINER_IMAGE_TAG" + echo " FORCE_RESTART Force rollout restart (default: true)" echo "" echo "Examples:" echo " $0 deploy" @@ -156,6 +158,13 @@ deploy_application() { # Wait for deployment to be ready echo "Waiting for deployment to be ready..." + + # Force restart if enabled + if [ "${FORCE_RESTART}" = "true" ]; then + echo "Forcing rollout restart..." + kubectl rollout restart deployment/${CONTAINER_IMAGE_NAME} -n ${KUBERNETES_NAMESPACE} + fi + kubectl rollout status deployment/${CONTAINER_IMAGE_NAME} \ -n ${KUBERNETES_NAMESPACE} \ --timeout=300s