fix: use strategic merge for K8s deploy instead of json patch [deploy]

This commit is contained in:
mdszxy committed 2026-10-05 19:28:07 +08:00
1 parent fe18e608dc
commit 54d37eff03
1 file changed
+36 -20
+36 -20
View File
@@ -195,16 +195,30 @@ jobs:
export DEPLOYMENT="${REPO_NAME}-deploy" export DEPLOYMENT="${REPO_NAME}-deploy"
echo "Deploying ${IMAGE_REF} to ${NAMESPACE}/${DEPLOYMENT}" echo "Deploying ${IMAGE_REF} to ${NAMESPACE}/${DEPLOYMENT}"
kubectl patch "deployment/${DEPLOYMENT}" -n "${NAMESPACE}" --type='json' -p='[ CONTAINER="$(kubectl get "deployment/${DEPLOYMENT}" -n "${NAMESPACE}" -o jsonpath='{.spec.template.spec.containers[0].name}')"
{"op":"replace","path":"/spec/strategy/rollingUpdate/maxSurge","value":"100%"}, echo "Container: ${CONTAINER}"
{"op":"replace","path":"/spec/strategy/rollingUpdate/maxUnavailable","value":0}, kubectl set image "deployment/${DEPLOYMENT}" "${CONTAINER}=${IMAGE_REF}" -n "${NAMESPACE}"
{"op":"replace","path":"/spec/template/spec/containers/0/image","value":"'"${IMAGE_REF}"'"}, kubectl patch "deployment/${DEPLOYMENT}" -n "${NAMESPACE}" --type strategic -p "
{"op":"replace","path":"/spec/template/spec/containers/0/imagePullPolicy","value":"IfNotPresent"}, spec:
{"op":"replace","path":"/spec/template/spec/containers/0/readinessProbe/httpGet/path","value":"/api/health"}, template:
{"op":"replace","path":"/spec/template/spec/containers/0/readinessProbe/timeoutSeconds","value":5}, spec:
{"op":"replace","path":"/spec/template/spec/containers/0/livenessProbe/httpGet/path","value":"/api/health"}, containers:
{"op":"replace","path":"/spec/template/spec/containers/0/livenessProbe/timeoutSeconds","value":5} - name: ${CONTAINER}
]' imagePullPolicy: IfNotPresent
env:
- name: A_UPSTREAM
value: http://project57-deploy.ns-project57.svc.cluster.local:3000
readinessProbe:
httpGet:
path: /api/health
port: 3000
timeoutSeconds: 5
livenessProbe:
httpGet:
path: /api/health
port: 3000
timeoutSeconds: 5
"
kubectl rollout status "deployment/${DEPLOYMENT}" -n "${NAMESPACE}" --timeout=180s kubectl rollout status "deployment/${DEPLOYMENT}" -n "${NAMESPACE}" --timeout=180s
echo "✅ Deployment completed successfully" echo "✅ Deployment completed successfully"
@@ -234,15 +248,17 @@ jobs:
export DEPLOYMENT="${REPO_NAME}-deploy" export DEPLOYMENT="${REPO_NAME}-deploy"
echo "Deploying existing image ${IMAGE_LATEST} to ${NAMESPACE}/${DEPLOYMENT}" echo "Deploying existing image ${IMAGE_LATEST} to ${NAMESPACE}/${DEPLOYMENT}"
kubectl patch "deployment/${DEPLOYMENT}" -n "${NAMESPACE}" --type='json' -p='[ CONTAINER="$(kubectl get "deployment/${DEPLOYMENT}" -n "${NAMESPACE}" -o jsonpath='{.spec.template.spec.containers[0].name}')"
{"op":"replace","path":"/spec/strategy/rollingUpdate/maxSurge","value":"100%"}, echo "Container: ${CONTAINER}"
{"op":"replace","path":"/spec/strategy/rollingUpdate/maxUnavailable","value":0}, kubectl set image "deployment/${DEPLOYMENT}" "${CONTAINER}=${IMAGE_LATEST}" -n "${NAMESPACE}"
{"op":"replace","path":"/spec/template/spec/containers/0/image","value":"'"${IMAGE_LATEST}"'"}, kubectl patch "deployment/${DEPLOYMENT}" -n "${NAMESPACE}" --type strategic -p "
{"op":"replace","path":"/spec/template/spec/containers/0/imagePullPolicy","value":"Always"}, spec:
{"op":"replace","path":"/spec/template/spec/containers/0/readinessProbe/httpGet/path","value":"/api/health"}, template:
{"op":"replace","path":"/spec/template/spec/containers/0/readinessProbe/timeoutSeconds","value":5}, spec:
{"op":"replace","path":"/spec/template/spec/containers/0/livenessProbe/httpGet/path","value":"/api/health"}, containers:
{"op":"replace","path":"/spec/template/spec/containers/0/livenessProbe/timeoutSeconds","value":5} - name: ${CONTAINER}
]' imagePullPolicy: Always
"
kubectl rollout restart "deployment/${DEPLOYMENT}" -n "${NAMESPACE}"
kubectl rollout status "deployment/${DEPLOYMENT}" -n "${NAMESPACE}" --timeout=180s kubectl rollout status "deployment/${DEPLOYMENT}" -n "${NAMESPACE}" --timeout=180s
echo "✅ Deployment completed (using existing image)" echo "✅ Deployment completed (using existing image)"