Skip to content

Commit 66875e5

Browse files
authored
Fixed wait-script naming issues. (#251)
1 parent e797241 commit 66875e5

File tree

4 files changed

+58
-45
lines changed

4 files changed

+58
-45
lines changed

.github/workflows/helm-tests.yml

Lines changed: 28 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,13 @@ jobs:
9191
9292
exit $?
9393
94+
- name: show jobs and pods
95+
run: |
96+
echo "===== Jobs ====="
97+
kubectl get jobs -o wide
98+
echo "===== Pods (pgstac) ====="
99+
kubectl get pods | grep -i pgstac || true
100+
94101
- name: debug pgstac-eoapi-superuser-init-db job failure
95102
if: steps.helm-render-install-eoapi-templates.outcome == 'failure'
96103
continue-on-error: true
@@ -99,7 +106,7 @@ jobs:
99106
100107
# Get job details
101108
echo "===== pgstac-eoapi-superuser-init-db Job Details ====="
102-
kubectl get job pgstac-eoapi-superuser-init-db -o yaml || echo "Could not get job details"
109+
kubectl get job "$RELEASE_NAME-pgstac-eoapi-superuser-init-db" -o yaml || echo "Could not get job details"
103110
104111
# Get pod details
105112
echo "===== Pod Details ====="
@@ -138,7 +145,7 @@ jobs:
138145
139146
# Get job details
140147
echo "===== pgstac-migrate Job Details ====="
141-
kubectl get job pgstac-migrate -o yaml || echo "Could not get pgstac-migrate job details"
148+
kubectl get job "$RELEASE_NAME-pgstac-migrate" -o yaml || echo "Could not get pgstac-migrate job details"
142149
143150
# Get pod details
144151
echo "===== pgstac-migrate Pod Details ====="
@@ -147,7 +154,7 @@ jobs:
147154
# Extract logs from pgstac-migrate pod(s)
148155
echo "===== pgstac-migrate Pod Logs ====="
149156
echo "Looking for completed pods from pgstac-migrate job..."
150-
COMPLETED_PODS=$(kubectl get pods --selector=job-name=pgstac-migrate --field-selector=status.phase=Succeeded,status.phase=Failed -o jsonpath='{.items[*].metadata.name}' 2>/dev/null)
157+
COMPLETED_PODS=$(kubectl get pods --selector=job-name="$RELEASE_NAME-pgstac-migrate" --field-selector=status.phase=Succeeded,status.phase=Failed -o jsonpath='{.items[*].metadata.name}' 2>/dev/null)
151158
if [ -n "$COMPLETED_PODS" ]; then
152159
echo "Found completed pods from pgstac-migrate job. Extracting logs from each:"
153160
for POD in $COMPLETED_PODS; do
@@ -174,22 +181,18 @@ jobs:
174181
timeout-minutes: 3
175182
continue-on-error: true
176183
run: |
177-
# Now wait for services to boot up
178-
while [[ -z "$(kubectl get pod | grep "^raster-$RELEASE_NAME-.*$" | cut -d' ' -f1 | xargs -I{} kubectl logs pod/{} | grep "GET /.*/healthz" | head -n 1)" ]]; do
179-
echo "still waiting for raster service to start..."
180-
sleep 1
181-
done
182-
echo "raster service has started, moving on..."
183-
while [[ -z "$(kubectl get pod | grep "^vector-$RELEASE_NAME-.*$" | cut -d' ' -f1 | xargs -I{} kubectl logs pod/{} | grep "GET /.*/healthz" | head -n 1)" ]]; do
184-
echo "still waiting for vector service to start..."
185-
sleep 1
186-
done
187-
echo "vector service has started, moving on..."
188-
while [[ -z "$(kubectl get pod | grep "^stac-$RELEASE_NAME-.*$" | cut -d' ' -f1 | xargs -I{} kubectl logs pod/{} | grep "GET /.*/_mgmt/ping" | head -n 1)" ]]; do
189-
echo "still waiting for stac service to start..."
190-
sleep 1
191-
done
192-
echo "all services have started, moving on..."
184+
# Wait for services to be ready using native readiness checks
185+
echo "Waiting for raster service to be ready..."
186+
kubectl wait --for=condition=Ready pod -l app=raster-${RELEASE_NAME} --timeout=180s
187+
echo "raster service is ready, moving on..."
188+
189+
echo "Waiting for vector service to be ready..."
190+
kubectl wait --for=condition=Ready pod -l app=vector-${RELEASE_NAME} --timeout=180s
191+
echo "vector service is ready, moving on..."
192+
193+
echo "Waiting for stac service to be ready..."
194+
kubectl wait --for=condition=Ready pod -l app=stac-${RELEASE_NAME} --timeout=180s
195+
echo "all services are ready, moving on..."
193196
194197
- name: cleanup if services fail to boot
195198
if: steps.watchservices.outcome == 'failure'
@@ -200,9 +203,9 @@ jobs:
200203
echo "===== Pod Status ====="
201204
kubectl get pods
202205
203-
# Extract logs from raster pod init container (wait-for-pgstacbootstrap)
204-
echo "===== Raster Pod Init Container Logs (wait-for-pgstacbootstrap) ====="
205-
kubectl get pod | grep "^raster-$RELEASE_NAME" | cut -d' ' -f1 | xargs -I{} kubectl logs pod/{} -c wait-for-pgstacbootstrap --tail=100 || echo "Could not get raster init container logs"
206+
# Extract logs from raster pod init container (wait-for-pgstac-jobs)
207+
echo "===== Raster Pod Init Container Logs (wait-for-pgstac-jobs) ====="
208+
kubectl get pod | grep "^raster-$RELEASE_NAME" | cut -d' ' -f1 | xargs -I{} kubectl logs pod/{} -c wait-for-pgstac-jobs --tail=100 || echo "Could not get raster init container logs"
206209
207210
# Extract logs from raster pod main container
208211
echo "===== Raster Pod Main Container Logs ====="
@@ -268,9 +271,9 @@ jobs:
268271
echo "===== Pod Status ====="
269272
kubectl get pods
270273
271-
# Extract logs from raster pod init container (wait-for-pgstacbootstrap)
272-
echo "===== Raster Pod Init Container Logs (wait-for-pgstacbootstrap) ====="
273-
kubectl get pod | grep "^raster-$RELEASE_NAME" | cut -d' ' -f1 | xargs -I{} kubectl logs pod/{} -c wait-for-pgstacbootstrap --tail=100 || echo "Could not get raster init container logs"
274+
# Extract logs from raster pod init container (wait-for-pgstac-jobs)
275+
echo "===== Raster Pod Init Container Logs (wait-for-pgstac-jobs) ====="
276+
kubectl get pod | grep "^raster-$RELEASE_NAME" | cut -d' ' -f1 | xargs -I{} kubectl logs pod/{} -c wait-for-pgstac-jobs --tail=100 || echo "Could not get raster init container logs"
274277
275278
# Extract logs from raster pod main container
276279
echo "===== Raster Pod Main Container Logs ====="

charts/eoapi/templates/_pgstac_init.tpl

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@
77
- -c
88
- |
99
echo "Waiting for pgstac-migrate job to complete..."
10-
until kubectl get job pgstac-migrate -o jsonpath='{.status.conditions[?(@.type=="Complete")].status}' | grep -q "True"; do
11-
echo "pgstac-migrate job not complete yet, waiting..."
10+
until kubectl get job {{ .Release.Name }}-pgstac-migrate -o jsonpath='{.status.conditions[?(@.type=="Complete")].status}' | grep -q "True"; do
11+
echo "{{ .Release.Name }}-pgstac-migrate job not complete yet, waiting..."
1212
sleep 5
1313
done
14-
echo "pgstac-migrate job completed successfully."
14+
echo "{{ .Release.Name }}-pgstac-migrate job completed successfully."
1515
{{- if .Values.pgstacBootstrap.settings.loadSamples }}
1616
- name: wait-for-pgstac-load-samples
1717
image: bitnami/kubectl:latest
@@ -20,11 +20,11 @@
2020
- -c
2121
- |
2222
echo "Waiting for pgstac-load-samples job to complete..."
23-
until kubectl get job pgstac-load-samples -o jsonpath='{.status.conditions[?(@.type=="Complete")].status}' | grep -q "True"; do
24-
echo "pgstac-load-samples job not complete yet, waiting..."
23+
until kubectl get job {{ .Release.Name }}-pgstac-load-samples -o jsonpath='{.status.conditions[?(@.type=="Complete")].status}' | grep -q "True"; do
24+
echo "{{ .Release.Name }}-pgstac-load-samples job not complete yet, waiting..."
2525
sleep 5
2626
done
27-
echo "pgstac-load-samples job completed successfully."
27+
echo "{{ .Release.Name }}-pgstac-load-samples job completed successfully."
2828
{{- end }}
2929
{{- end }}
3030
{{- end -}}

charts/eoapi/templates/pgstacbootstrap/job.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
apiVersion: batch/v1
2424
kind: Job
2525
metadata:
26-
name: pgstac-migrate
26+
name: {{ .Release.Name }}-pgstac-migrate
2727
labels:
2828
app: pgstac-migrate
2929
annotations:
@@ -91,7 +91,7 @@ spec:
9191
apiVersion: batch/v1
9292
kind: Job
9393
metadata:
94-
name: pgstac-load-samples
94+
name: {{ .Release.Name }}-pgstac-load-samples
9595
labels:
9696
app: pgstac-load-samples
9797
annotations:

charts/eoapi/templates/services/_common.tpl

Lines changed: 22 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -35,24 +35,34 @@ Helper function for common init containers to wait for pgstac jobs
3535
initContainers:
3636
- name: wait-for-pgstac-jobs
3737
image: bitnami/kubectl:latest
38+
env:
39+
{{- include "eoapi.commonEnvVars" (dict "service" "init" "root" .) | nindent 2 }}
3840
command:
3941
- /bin/sh
4042
- -c
4143
- |
42-
echo "Waiting for pgstac-migrate job to complete..."
43-
until kubectl get job pgstac-migrate -o jsonpath='{.status.conditions[?(@.type=="Complete")].status}' | grep -q "True"; do
44-
echo "pgstac-migrate job not complete yet, waiting..."
45-
sleep 5
46-
done
47-
echo "pgstac-migrate job completed successfully."
44+
set -eu
4845
46+
MIGRATE_JOB="${RELEASE_NAME:-eoapi}-pgstac-migrate"
47+
SAMPLES_JOB="${RELEASE_NAME:-eoapi}-pgstac-load-samples"
48+
49+
wait_complete () {
50+
job="$1"
51+
echo "Waiting for $job to complete..."
52+
# Optional: fail fast after 15 min so CI doesn't hang forever
53+
deadline=$(( $(date +%s) + 900 ))
54+
while :; do
55+
# If job doesn't exist yet or SA can't read it, jsonpath may be empty
56+
status="$(kubectl get job "$job" -o jsonpath='{.status.conditions[?(@.type=="Complete")].status}' 2>/dev/null || true)"
57+
[ "$status" = "True" ] && { echo "$job completed"; return 0; }
58+
[ $(date +%s) -ge $deadline ] && { echo "Timeout waiting for $job"; exit 1; }
59+
sleep 5
60+
done
61+
}
62+
63+
wait_complete "$MIGRATE_JOB"
4964
{{- if .Values.pgstacBootstrap.settings.loadSamples }}
50-
echo "Waiting for pgstac-load-samples job to complete..."
51-
until kubectl get job pgstac-load-samples -o jsonpath='{.status.conditions[?(@.type=="Complete")].status}' | grep -q "True"; do
52-
echo "pgstac-load-samples job not complete yet, waiting..."
53-
sleep 5
54-
done
55-
echo "pgstac-load-samples job completed successfully."
65+
wait_complete "$SAMPLES_JOB"
5666
{{- end }}
5767
{{- end }}
5868
{{- end -}}

0 commit comments

Comments
 (0)