@@ -112,14 +112,48 @@ spec:
112112 # Rollout live events deployment if exists to match integration image versions
113113 rollout_if_exists() {
114114 local DEPLOYMENT_NAME=$1
115+ local CONTAINER_NAME="{{ include "port-ocean.containerName" . }}"
115116
116- echo "Running: kubectl get deployment ${DEPLOYMENT_NAME} -o=json | jq -r \".metadata.name\" "
117- DEPLOYMENT=$(kubectl get deployment ${DEPLOYMENT_NAME} -- token=$TOKEN -o=json | jq -r ".metadata.name")
117+ echo "Checking deployment: ${DEPLOYMENT_NAME}"
118+ DEPLOYMENT=$(kubectl get deployment ${DEPLOYMENT_NAME} -n ${NAMESPACE} -- token=$TOKEN -o=json 2>/dev/null | jq -r ".metadata.name" 2>/dev/null )
118119
119120 if [ -n "$DEPLOYMENT" ]; then
120121 echo "Found deployment: $DEPLOYMENT"
121- echo "Rolling out $DEPLOYMENT"
122- kubectl rollout restart deployment $DEPLOYMENT -n ${NAMESPACE} --token=$TOKEN
122+
123+ # Get the CronJob container's resolved image SHA
124+ CRONJOB_IMAGE_SHA=$(kubectl get pod $HOSTNAME -n ${NAMESPACE} --token=$TOKEN -o=jsonpath="{.status.containerStatuses[?(@.name==\"${CONTAINER_NAME}\")].imageID}" 2>/dev/null)
125+
126+ # Get selector labels from the deployment to find its pods
127+ SELECTOR=$(kubectl get deployment ${DEPLOYMENT_NAME} -n ${NAMESPACE} --token=$TOKEN -o=json 2>/dev/null | jq -r '.spec.selector.matchLabels | to_entries | map("\(.key)=\(.value)") | join(",")' 2>/dev/null)
128+
129+ if [ -n "$SELECTOR" ]; then
130+ # Get first pod managed by this deployment
131+ DEPLOYMENT_POD=$(kubectl get pods -n ${NAMESPACE} -l ${SELECTOR} --token=$TOKEN -o=jsonpath='{.items[0].metadata.name}' 2>/dev/null)
132+
133+ if [ -n "$DEPLOYMENT_POD" ]; then
134+ # Get the deployment container's resolved image SHA
135+ DEPLOYMENT_IMAGE_SHA=$(kubectl get pod ${DEPLOYMENT_POD} -n ${NAMESPACE} --token=$TOKEN -o=jsonpath="{.status.containerStatuses[?(@.name==\"${CONTAINER_NAME}\")].imageID}" 2>/dev/null)
136+
137+ echo "CronJob container image SHA: $CRONJOB_IMAGE_SHA"
138+ echo "Deployment container image SHA: $DEPLOYMENT_IMAGE_SHA"
139+
140+ if [ -n "$CRONJOB_IMAGE_SHA" ] && [ -n "$DEPLOYMENT_IMAGE_SHA" ]; then
141+ if [ "$CRONJOB_IMAGE_SHA" = "$DEPLOYMENT_IMAGE_SHA" ]; then
142+ echo "Image SHAs are the same. Skipping rollout for $DEPLOYMENT"
143+ else
144+ echo "Image SHAs are different. Rolling out $DEPLOYMENT"
145+ kubectl rollout restart deployment $DEPLOYMENT -n ${NAMESPACE} --token=$TOKEN
146+ fi
147+ else
148+ echo "Could not retrieve image SHAs. Proceeding with rollout as safety measure."
149+ kubectl rollout restart deployment $DEPLOYMENT -n ${NAMESPACE} --token=$TOKEN
150+ fi
151+ else
152+ echo "No running pods found for deployment $DEPLOYMENT_NAME. Skipping rollout (no pods to compare)."
153+ fi
154+ else
155+ echo "Could not determine selector for deployment $DEPLOYMENT_NAME. Skipping rollout."
156+ fi
123157 else
124158 echo "Deployment $DEPLOYMENT_NAME does not exist. Skipping rollout restart."
125159 fi
@@ -157,16 +191,16 @@ spec:
157191 {{- tpl (toYaml .Values.extraEnv) . | nindent 14 }}
158192 {{- end }}
159193 {{- if .Values.postgresql.enabled }}
160- - name : OCEAN__DATABASE__HOST
161- value : {{ include "port-ocean.name" . }}-postgresql
162- - name : OCEAN__DATABASE__PORT
163- value : ' 5432'
164- - name : OCEAN__DATABASE__NAME
165- value : {{ .Values.postgresql.global.postgresql.auth.database }}
166- - name : OCEAN__DATABASE__USERNAME
167- value : {{ .Values.postgresql.global.postgresql.auth.username }}
168- - name : OCEAN__DATABASE__PASSWORD
169- value : {{ .Values.postgresql.global.postgresql.auth.password }}
194+ - name : OCEAN__DATABASE__HOST
195+ value : {{ include "port-ocean.name" . }}-postgresql
196+ - name : OCEAN__DATABASE__PORT
197+ value : ' 5432'
198+ - name : OCEAN__DATABASE__NAME
199+ value : {{ .Values.postgresql.global.postgresql.auth.database }}
200+ - name : OCEAN__DATABASE__USERNAME
201+ value : {{ .Values.postgresql.global.postgresql.auth.username }}
202+ - name : OCEAN__DATABASE__PASSWORD
203+ value : {{ .Values.postgresql.global.postgresql.auth.password }}
170204 {{- end }}
171205 envFrom :
172206 - configMapRef :
0 commit comments