@@ -213,7 +213,7 @@ var ciReleaseDeployCmd = &cobra.Command{
213213 SILTA_ENVIRONMENT_NAME='%s'
214214 BRANCHNAME='%s'
215215 NGINX_IMAGE_URL='%s'
216- CLUSTER_DOMAIN='%s'
216+ CLUSTER_DOMAIN='%s'
217217 EXTRA_NOAUTHIPS='%s'
218218 EXTRA_VPCNATIVE='%s'
219219 EXTRA_CLUSTERTYPE='%s'
@@ -222,37 +222,16 @@ var ciReleaseDeployCmd = &cobra.Command{
222222 EXTRA_HELM_FLAGS='%s'
223223 DEPLOYMENT_TIMEOUT='%s'
224224
225- # Detect pods in FAILED state
226- function show_failing_pods() {
227- echo ""
228- failed_pods=$(kubectl get pod -l "release=$RELEASE_NAME,cronjob!=true" -n "$NAMESPACE" -o custom-columns="POD:metadata.name,STATE:status.containerStatuses[*].ready" --no-headers | grep -E "<none>|false" | grep -Eo '^[^ ]+')
229- if [[ ! -z "$failed_pods" ]] ; then
230- echo "Failing pods:"
231- while IFS= read -r pod; do
232- echo "---- ${NAMESPACE} / ${pod} ----"
233- echo "* Events"
234- kubectl get events --field-selector involvedObject.name=${pod},type!=Normal --show-kind=true --ignore-not-found=true --namespace ${NAMESPACE}
235- echo ""
236- echo "* Logs"
237- containers=$(kubectl get pods "${pod}" --namespace "${NAMESPACE}" -o json | jq -r 'try .status | .containerStatuses[] | select(.ready == false).name')
238- if [[ ! -z "$containers" ]] ; then
239- for container in ${containers}; do
240- kubectl logs "${pod}" --prefix=true --since="${DEPLOYMENT_TIMEOUT}" --namespace "${NAMESPACE}" -c "${container}"
241- done
242- else
243- echo "no logs found"
244- fi
245-
246- echo "----"
247- done <<< "$failed_pods"
225+ function deployment_failed() {
226+ debug_failed_deployment
227+ rm -f helm-output.log || true
228+ }
248229
249- false
250- else
251- true
252- fi
230+ function debug_failed_deployment() {
231+ silta ci release debug-failed --release-name="${RELEASE_NAME}" --namespace="${NAMESPACE}"
253232 }
254233
255- trap show_failing_pods ERR
234+ trap deployment_failed ERR
256235
257236 helm upgrade --install "${RELEASE_NAME}" "${CHART_NAME}" \
258237 --repo "${CHART_REPOSITORY}" \
@@ -298,7 +277,7 @@ var ciReleaseDeployCmd = &cobra.Command{
298277 GIT_REPOSITORY_URL='%s'
299278 GITAUTH_USERNAME='%s'
300279 GITAUTH_PASSWORD='%s'
301- CLUSTER_DOMAIN='%s'
280+ CLUSTER_DOMAIN='%s'
302281 NAMESPACE='%s'
303282 EXTRA_NOAUTHIPS='%s'
304283 EXTRA_VPCNATIVE='%s'
@@ -310,38 +289,16 @@ var ciReleaseDeployCmd = &cobra.Command{
310289 DEPLOYMENT_TIMEOUT='%s'
311290 DEPLOYMENT_TIMEOUT_SECONDS='%d'
312291
313- # Detect pods in FAILED state
314- function show_failing_pods() {
315- echo ""
316- failed_pods=$(kubectl get pod -l "release=$RELEASE_NAME,cronjob!=true" -n "$NAMESPACE" -o custom-columns="POD:metadata.name,STATE:status.containerStatuses[*].ready" --no-headers | grep -E "<none>|false" | grep -Eo '^[^ ]+')
317- if [[ ! -z "$failed_pods" ]] ; then
318- echo "Failing pods:"
319- while IFS= read -r pod; do
320- echo "---- ${NAMESPACE} / ${pod} ----"
321- echo "* Events"
322- kubectl get events --field-selector involvedObject.name=${pod},type!=Normal --show-kind=true --ignore-not-found=true --namespace ${NAMESPACE}
323- echo ""
324- echo "* Logs"
325- containers=$(kubectl get pods "${pod}" --namespace "${NAMESPACE}" -o json | jq -r 'try .status | .containerStatuses[] | select(.ready == false).name')
326- if [[ ! -z "$containers" ]] ; then
327- for container in ${containers}; do
328- kubectl logs "${pod}" --prefix=true --since="${DEPLOYMENT_TIMEOUT}" --namespace "${NAMESPACE}" -c "${container}"
329- done
330- else
331- echo "no logs found"
332- fi
333-
334- echo "----"
335- done <<< "$failed_pods"
292+ function deployment_failed() {
293+ debug_failed_deployment
294+ rm -f helm-output.log || true
295+ }
336296
337- false
338- else
339- true
340- fi
341- rm -f helm-output.log
297+ function debug_failed_deployment() {
298+ silta ci release debug-failed --release-name="${RELEASE_NAME}" --namespace="${NAMESPACE}"
342299 }
343300
344- trap show_failing_pods ERR
301+ trap deployment_failed ERR
345302
346303 helm upgrade --install "${RELEASE_NAME}" "${CHART_NAME}" \
347304 --repo "${CHART_REPOSITORY}" \
@@ -381,17 +338,17 @@ var ciReleaseDeployCmd = &cobra.Command{
381338 # Helm command is complete.
382339 if ! ps -p "$pid" > /dev/null; then
383340 echo "Helm output:"
384- cat helm-output.log
341+ cat helm-output.log || true
385342 wait $pid
386343 if grep -q "UPGRADE FAILED" helm-output.log ; then
387- show_failing_pods
344+ debug_failed_deployment
388345 fi
389346 break
390347 fi
391348
392349 if [ $TIME_WAITING -gt ${DEPLOYMENT_TIMEOUT_SECONDS} ]; then
393350 echo "Timeout waiting for resources."
394- show_failing_pods
351+ debug_failed_deployment
395352 exit 1
396353 fi
397354
@@ -407,7 +364,7 @@ var ciReleaseDeployCmd = &cobra.Command{
407364 echo "$statefulsets" | xargs -n 1 kubectl rollout status statefulset -n "$NAMESPACE" --timeout 5m
408365 fi
409366 kubectl get deployment -n "$NAMESPACE" -l "release=${RELEASE_NAME}" -o name | xargs -n 1 kubectl rollout status -n "$NAMESPACE" --timeout 5m
410- rm -f helm-output.log
367+ rm -f helm-output.log || true
411368 ` ,
412369 releaseName , chartName , chartRepository , chartVersionOverride ,
413370 siltaEnvironmentName , branchname ,
@@ -513,7 +470,7 @@ var ciReleaseDeployCmd = &cobra.Command{
513470 GIT_REPOSITORY_URL='%s'
514471 GITAUTH_USERNAME='%s'
515472 GITAUTH_PASSWORD='%s'
516- CLUSTER_DOMAIN='%s'
473+ CLUSTER_DOMAIN='%s'
517474 EXTRA_NOAUTHIPS='%s'
518475 EXTRA_VPCNATIVE='%s'
519476 EXTRA_CLUSTERTYPE='%s'
@@ -526,38 +483,16 @@ var ciReleaseDeployCmd = &cobra.Command{
526483 DEPLOYMENT_TIMEOUT='%s'
527484 DEPLOYMENT_TIMEOUT_SECONDS='%d'
528485
529- # Detect pods in FAILED state
530- function show_failing_pods() {
531- echo ""
532- failed_pods=$(kubectl get pod -l "release=$RELEASE_NAME,cronjob!=true" -n "$NAMESPACE" -o custom-columns="POD:metadata.name,STATE:status.containerStatuses[*].ready" --no-headers | grep -E "<none>|false" | grep -Eo '^[^ ]+')
533- if [[ ! -z "$failed_pods" ]] ; then
534- echo "Failing pods:"
535- while IFS= read -r pod; do
536- echo "---- ${NAMESPACE} / ${pod} ----"
537- echo "* Events"
538- kubectl get events --field-selector involvedObject.name=${pod},type!=Normal --show-kind=true --ignore-not-found=true --namespace ${NAMESPACE}
539- echo ""
540- echo "* Logs"
541- containers=$(kubectl get pods "${pod}" --namespace "${NAMESPACE}" -o json | jq -r 'try .status | .containerStatuses[] | select(.ready == false).name')
542- if [[ ! -z "$containers" ]] ; then
543- for container in ${containers}; do
544- kubectl logs "${pod}" --prefix=true --since="${DEPLOYMENT_TIMEOUT}" --namespace "${NAMESPACE}" -c "${container}"
545- done
546- else
547- echo "no logs found"
548- fi
549-
550- echo "----"
551- done <<< "$failed_pods"
486+ function deployment_failed() {
487+ debug_failed_deployment
488+ rm -f helm-output.log || true
489+ }
552490
553- false
554- else
555- true
556- fi
557- rm -f helm-output.log
491+ function debug_failed_deployment() {
492+ silta ci release debug-failed --release-name="${RELEASE_NAME}" --namespace="${NAMESPACE}"
558493 }
559494
560- trap show_failing_pods ERR
495+ trap deployment_failed ERR
561496
562497 helm upgrade --install "${RELEASE_NAME}" "${CHART_NAME}" \
563498 --repo "${CHART_REPOSITORY}" \
@@ -601,17 +536,17 @@ var ciReleaseDeployCmd = &cobra.Command{
601536 # Helm command is complete.
602537 if ! ps -p "$pid" > /dev/null; then
603538 echo "Helm output:"
604- cat helm-output.log
539+ cat helm-output.log || true
605540 wait $pid
606541 if grep -q "UPGRADE FAILED" helm-output.log ; then
607- show_failing_pods
542+ debug_failed_deployment
608543 fi
609544 break
610545 fi
611546
612547 if [ $TIME_WAITING -gt ${DEPLOYMENT_TIMEOUT_SECONDS} ]; then
613548 echo "Timeout waiting for resources."
614- show_failing_pods
549+ debug_failed_deployment
615550 exit 1
616551 fi
617552
@@ -627,7 +562,7 @@ var ciReleaseDeployCmd = &cobra.Command{
627562 echo "$statefulsets" | xargs -n 1 kubectl rollout status statefulset -n "$NAMESPACE" --timeout 5m
628563 fi
629564 kubectl get deployment -n "$NAMESPACE" -l "release=${RELEASE_NAME}" -o name | xargs -n 1 kubectl rollout status -n "$NAMESPACE" --timeout 5m
630- rm -f helm-output.log
565+ rm -f helm-output.log || true
631566 ` ,
632567 releaseName , chartName , chartRepository , chartVersionOverride ,
633568 siltaEnvironmentName , branchname ,
0 commit comments