@@ -58,71 +58,39 @@ jobs:
5858
5959 - name : Start compose stack
6060 working-directory : compose
61- run : docker compose -f ${{ matrix.compose-file }} up -d || true
61+ run : docker compose -f ${{ matrix.compose-file }} up -d
6262
63- - name : Check admin-tools completion
63+ - name : Start validation container
6464 working-directory : compose
65- run : |
66- # Wait a moment for container to start and potentially fail
67- sleep 10
68- # Check if admin-tools container exists and get its exit code
69- if docker compose -f ${{ matrix.compose-file }} ps -a temporal-admin-tools --format json | jq -e '.[0]' > /dev/null 2>&1; then
70- EXIT_CODE=$(docker compose -f ${{ matrix.compose-file }} ps -a temporal-admin-tools --format json | jq -r '.[0].ExitCode // "null"')
71- if [ "$EXIT_CODE" != "0" ] && [ "$EXIT_CODE" != "null" ]; then
72- echo "Admin-tools failed with exit code: $EXIT_CODE"
73- docker compose -f ${{ matrix.compose-file }} logs temporal-admin-tools
74- exit 1
75- fi
76- fi
65+ run : docker compose -f ${{ matrix.compose-file }} -f docker-compose-validate.yml up temporal-validate -d
7766
78- - name : Wait for services to be healthy
67+ - name : Wait for validation to complete
7968 working-directory : compose
8069 run : |
81- echo "Waiting up to 5 minutes for services to be healthy..."
82- timeout 300 bash -c 'until docker compose -f ${{ matrix.compose-file }} ps | grep -E "(healthy|Started)"; do sleep 5; done' || {
83- echo "Services failed to become healthy"
84- docker compose -f ${{ matrix.compose-file }} ps
85- docker compose -f ${{ matrix.compose-file }} logs
70+ echo "Waiting for validation container to complete (max 5 minutes)..."
71+ timeout 300 bash -c 'until docker compose -f ${{ matrix.compose-file }} -f docker-compose-validate.yml ps temporal-validate --format json | jq -e ".[0].State == \"exited\"" > /dev/null 2>&1; do sleep 2; done' || {
72+ echo "Validation container did not complete in time"
73+ docker compose -f ${{ matrix.compose-file }} -f docker-compose-validate.yml logs temporal-validate
8674 exit 1
8775 }
8876
89- - name : Check admin-tools logs
90- working-directory : compose
91- run : |
92- echo "=== Admin-tools logs ==="
93- docker compose -f ${{ matrix.compose-file }} logs temporal-admin-tools 2>&1 | grep -v "level=warning" || true
94- echo "=== Checking for errors ==="
95- if docker compose -f ${{ matrix.compose-file }} logs temporal-admin-tools 2>&1 | grep -i "error" | grep -v "unable to describe namespace" | grep -v "level=warning"; then
96- echo "Found errors in admin-tools logs"
97- exit 1
98- fi
99- echo "No errors found in admin-tools logs"
77+ # Check exit code
78+ EXIT_CODE=$(docker compose -f ${{ matrix.compose-file }} -f docker-compose-validate.yml ps -a temporal-validate --format json | jq -r '.[0].ExitCode')
79+ echo "Validation container exit code: $EXIT_CODE"
10080
101- - name : Check namespace creation logs
102- working-directory : compose
103- run : |
104- echo "=== Namespace creation logs ==="
105- docker compose -f ${{ matrix.compose-file }} logs temporal-create-namespace 2>&1 | grep -v "level=warning" || true
106- echo "=== Checking for success message ==="
107- if ! docker compose -f ${{ matrix.compose-file }} logs temporal-create-namespace 2>&1 | grep -q "Namespace.*created"; then
108- echo "Namespace creation failed or did not complete"
81+ if [ "$EXIT_CODE" != "0" ]; then
82+ echo "Validation failed!"
83+ docker compose -f ${{ matrix.compose-file }} -f docker-compose-validate.yml logs temporal-validate
10984 exit 1
11085 fi
111- echo "Namespace creation succeeded"
11286
113- - name : Verify temporal server is healthy
114- working-directory : compose
115- run : |
116- docker compose -f ${{ matrix.compose-file }} exec -T temporal temporal operator cluster health || {
117- echo "Temporal server health check failed"
118- docker compose -f ${{ matrix.compose-file }} logs temporal
119- exit 1
120- }
87+ echo "Validation passed!"
88+ docker compose -f ${{ matrix.compose-file }} -f docker-compose-validate.yml logs temporal-validate
12189
12290 - name : Cleanup
12391 if : always()
12492 working-directory : compose
125- run : docker compose -f ${{ matrix.compose-file }} down -v
93+ run : docker compose -f ${{ matrix.compose-file }} -f docker-compose-validate.yml down -v
12694
12795 compose-tls-test :
12896 name : Test docker-compose-tls.yml
@@ -151,63 +119,40 @@ jobs:
151119
152120 - name : Start TLS compose stack
153121 working-directory : compose
154- run : COMPOSE_PROJECT_NAME=tls_test docker compose -f docker-compose-tls.yml up -d || true
122+ run : COMPOSE_PROJECT_NAME=tls_test docker compose -f docker-compose-tls.yml up -d
155123
156- - name : Check admin-tools-setup completion
124+ - name : Start validation container
157125 working-directory : compose
158- run : |
159- # Wait a moment for container to start and potentially fail
160- sleep 10
161- # Check if admin-tools-setup container exists and get its exit code
162- if COMPOSE_PROJECT_NAME=tls_test docker compose -f docker-compose-tls.yml ps -a temporal-admin-tools-setup --format json | jq -e '.[0]' > /dev/null 2>&1; then
163- EXIT_CODE=$(COMPOSE_PROJECT_NAME=tls_test docker compose -f docker-compose-tls.yml ps -a temporal-admin-tools-setup --format json | jq -r '.[0].ExitCode // "null"')
164- if [ "$EXIT_CODE" != "0" ] && [ "$EXIT_CODE" != "null" ]; then
165- echo "Admin-tools-setup failed with exit code: $EXIT_CODE"
166- COMPOSE_PROJECT_NAME=tls_test docker compose -f docker-compose-tls.yml logs temporal-admin-tools-setup
167- exit 1
168- fi
169- fi
126+ run : COMPOSE_PROJECT_NAME=tls_test docker compose -f docker-compose-tls.yml -f docker-compose-validate.yml up temporal-validate -d
170127
171- - name : Wait for services to be healthy
128+ - name : Wait for validation to complete
172129 working-directory : compose
173130 run : |
174- echo "Waiting up to 5 minutes for services to be healthy..."
175- timeout 300 bash -c 'until COMPOSE_PROJECT_NAME=tls_test docker compose -f docker-compose-tls.yml ps | grep -E "(healthy|Started)"; do sleep 5; done' || {
176- echo "Services failed to become healthy"
177- COMPOSE_PROJECT_NAME=tls_test docker compose -f docker-compose-tls.yml ps
178- COMPOSE_PROJECT_NAME=tls_test docker compose -f docker-compose-tls.yml logs
131+ echo "Waiting for validation container to complete (max 5 minutes)..."
132+ timeout 300 bash -c 'until COMPOSE_PROJECT_NAME=tls_test docker compose -f docker-compose-tls.yml -f docker-compose-validate.yml ps temporal-validate --format json | jq -e ".[0].State == \"exited\"" > /dev/null 2>&1; do sleep 2; done' || {
133+ echo "Validation container did not complete in time"
134+ COMPOSE_PROJECT_NAME=tls_test docker compose -f docker-compose-tls.yml -f docker-compose-validate.yml logs temporal-validate
179135 exit 1
180136 }
181137
182- - name : Check admin-tools logs
183- working-directory : compose
184- run : |
185- echo "=== Admin-tools-setup logs ==="
186- COMPOSE_PROJECT_NAME=tls_test docker compose -f docker-compose-tls.yml logs temporal-admin-tools-setup 2>&1 | grep -v "level=warning" || true
187- echo "=== Checking for errors ==="
188- if COMPOSE_PROJECT_NAME=tls_test docker compose -f docker-compose-tls.yml logs temporal-admin-tools-setup 2>&1 | grep -i "error" | grep -v "unable to describe namespace" | grep -v "level=warning"; then
189- echo "Found errors in admin-tools logs"
190- exit 1
191- fi
192- echo "No errors found in admin-tools logs"
138+ # Check exit code
139+ EXIT_CODE=$(COMPOSE_PROJECT_NAME=tls_test docker compose -f docker-compose-tls.yml -f docker-compose-validate.yml ps -a temporal-validate --format json | jq -r '.[0].ExitCode')
140+ echo "Validation container exit code: $EXIT_CODE"
193141
194- - name : Check namespace creation logs
195- working-directory : compose
196- run : |
197- echo "=== Namespace creation logs ==="
198- COMPOSE_PROJECT_NAME=tls_test docker compose -f docker-compose-tls.yml logs temporal-create-namespace 2>&1 | grep -v "level=warning" || true
199- echo "=== Checking for success message ==="
200- if ! COMPOSE_PROJECT_NAME=tls_test docker compose -f docker-compose-tls.yml logs temporal-create-namespace 2>&1 | grep -q "Namespace.*created"; then
201- echo "Namespace creation failed or did not complete"
142+ if [ "$EXIT_CODE" != "0" ]; then
143+ echo "Validation failed!"
144+ COMPOSE_PROJECT_NAME=tls_test docker compose -f docker-compose-tls.yml -f docker-compose-validate.yml logs temporal-validate
202145 exit 1
203146 fi
204- echo "Namespace creation succeeded"
147+
148+ echo "Validation passed!"
149+ COMPOSE_PROJECT_NAME=tls_test docker compose -f docker-compose-tls.yml -f docker-compose-validate.yml logs temporal-validate
205150
206151 - name : Cleanup
207152 if : always()
208153 working-directory : compose
209154 run : |
210- COMPOSE_PROJECT_NAME=tls_test docker compose -f docker-compose-tls.yml down -v
155+ COMPOSE_PROJECT_NAME=tls_test docker compose -f docker-compose-tls.yml -f docker-compose-validate.yml down -v
211156 docker volume rm temporal_tls_pki || true
212157 rm -rf .pki
213158
@@ -230,45 +175,34 @@ jobs:
230175
231176 - name : Start multirole compose stack
232177 working-directory : compose
233- run : docker compose -f docker-compose-multirole.yaml up -d || true
178+ run : docker compose -f docker-compose-multirole.yaml up -d
234179
235- - name : Check setup completion
180+ - name : Start validation container
236181 working-directory : compose
237- run : |
238- # Wait a moment for container to start and potentially fail
239- sleep 10
240- # Check if setup container exists and get its exit code
241- if docker compose -f docker-compose-multirole.yaml ps -a temporal-setup --format json | jq -e '.[0]' > /dev/null 2>&1; then
242- EXIT_CODE=$(docker compose -f docker-compose-multirole.yaml ps -a temporal-setup --format json | jq -r '.[0].ExitCode // "null"')
243- if [ "$EXIT_CODE" != "0" ] && [ "$EXIT_CODE" != "null" ]; then
244- echo "Setup failed with exit code: $EXIT_CODE"
245- docker compose -f docker-compose-multirole.yaml logs temporal-setup
246- exit 1
247- fi
248- fi
182+ run : docker compose -f docker-compose-multirole.yaml -f docker-compose-validate-multirole.yml up temporal-validate -d
249183
250- - name : Wait for services to be healthy
184+ - name : Wait for validation to complete
251185 working-directory : compose
252186 run : |
253- echo "Waiting up to 5 minutes for services to be healthy..."
254- timeout 300 bash -c 'until docker compose -f docker-compose-multirole.yaml ps | grep -E "(healthy|Started)"; do sleep 5; done' || {
255- echo "Services failed to become healthy"
256- docker compose -f docker-compose-multirole.yaml ps
257- docker compose -f docker-compose-multirole.yaml logs
187+ echo "Waiting for validation container to complete (max 5 minutes)..."
188+ timeout 300 bash -c 'until docker compose -f docker-compose-multirole.yaml -f docker-compose-validate-multirole.yml ps temporal-validate --format json | jq -e ".[0].State == \"exited\"" > /dev/null 2>&1; do sleep 2; done' || {
189+ echo "Validation container did not complete in time"
190+ docker compose -f docker-compose-multirole.yaml -f docker-compose-validate-multirole.yml logs temporal-validate
258191 exit 1
259192 }
260193
261- - name : Check setup logs
262- working-directory : compose
263- run : |
264- echo "=== Setup logs ==="
265- docker compose -f docker-compose-multirole.yaml logs temporal-setup 2>&1 | grep -v "level=warning" || true
266- echo "=== Checking for errors ==="
267- if docker compose -f docker-compose-multirole.yaml logs temporal-setup 2>&1 | grep -i "error" | grep -v "unable to describe namespace" | grep -v "level=warning"; then
268- echo "Found errors in setup logs"
194+ # Check exit code
195+ EXIT_CODE=$(docker compose -f docker-compose-multirole.yaml -f docker-compose-validate-multirole.yml ps -a temporal-validate --format json | jq -r '.[0].ExitCode')
196+ echo "Validation container exit code: $EXIT_CODE"
197+
198+ if [ "$EXIT_CODE" != "0" ]; then
199+ echo "Validation failed!"
200+ docker compose -f docker-compose-multirole.yaml -f docker-compose-validate-multirole.yml logs temporal-validate
269201 exit 1
270202 fi
271- echo "No errors found in setup logs"
203+
204+ echo "Validation passed!"
205+ docker compose -f docker-compose-multirole.yaml -f docker-compose-validate-multirole.yml logs temporal-validate
272206
273207 - name : Verify temporal services are running
274208 working-directory : compose
@@ -278,4 +212,4 @@ jobs:
278212 - name : Cleanup
279213 if : always()
280214 working-directory : compose
281- run : docker compose -f docker-compose-multirole.yaml down -v
215+ run : docker compose -f docker-compose-multirole.yaml -f docker-compose-validate-multirole.yml down -v
0 commit comments