22set -e
33
44KUBERNETES_NAMESPACE=" "
5- KUBERNETES_DEPLOYMENT_NAME =" "
6- APPLICATION_STARTUP_MESSAGE= " Application startup complete "
5+ PR_NUMBER =" "
6+ DEPLOY_SUCCESSFUL=true
77
8- while getopts n:d:m : flag
8+ while getopts n:p : flag
99do
1010 case " ${flag} " in
1111 n) KUBERNETES_NAMESPACE=${OPTARG} ;;
12- d) KUBERNETES_DEPLOYMENT_NAME=${OPTARG} ;;
13- m) APPLICATION_STARTUP_MESSAGE=${OPTARG} ;;
12+ p) PR_NUMBER=${OPTARG} ;;
1413 esac
1514done
1615
1716kubectl config set-context --current --namespace=$KUBERNETES_NAMESPACE
1817echo " Context set to namespace: \" $KUBERNETES_NAMESPACE \" "
1918
20- echo " Reading logs to determine application startup status for '$KUBERNETES_DEPLOYMENT_NAME '"
21- echo " Searching for message: '$APPLICATION_STARTUP_MESSAGE '"
19+ UPDATED_FILES=$( gh pr diff $PR_NUMBER --name-only)
20+ while IFS= read -r file; do
21+ if [[ $file != apps/* ]]; then
22+ continue
23+ fi
2224
23- LOG_CONTENTS=$( kubectl logs deployment/${KUBERNETES_DEPLOYMENT_NAME} \
24- || echo " Waiting for application startuop ..." )
25+ deploy=$( echo " $file " | cut -d/ -f 2)
2526
26- while [[ " $LOG_CONTENTS " != * " $APPLICATION_STARTUP_MESSAGE " * ]]; do
27- echo " Waiting for application startup..."
28- sleep 3
29- LOG_CONTENTS=$( kubectl logs deployment/${KUBERNETES_DEPLOYMENT_NAME} \
30- || echo " Waiting for application startuop ..." )
31-
32- if [[ " $LOG_CONTENTS " == * " ERROR" * ]]; then
33- echo " Application startup failed:"
34- echo " $LOG_CONTENTS "
35- exit 1
27+ set +e
28+ kubectl rollout status deploy $deploy --timeout 30s
29+ if [ $? -ne 0 ]; then
30+ echo " ::error::Deployment $deploy failed to rollout"
31+ DEPLOY_SUCCESSFUL=false
3632 fi
37- done
33+ set -e
34+
35+ done <<< " $UPDATED_FILES"
3836
39- echo " Application startup successful:"
40- echo " $LOG_CONTENTS "
37+ if [ $DEPLOY_SUCCESSFUL = true ]; then
38+ echo " ::notice::Automated release successful"
39+ else
40+ echo " ::error::Automated release failed"
41+ exit 1
42+ fi
0 commit comments