@@ -141,3 +141,62 @@ jobs:
141141 pod=$(kubectl get pods -n "$namespace" -l app.kubernetes.io/name=zulip --output name)
142142 kubectl -n "$namespace" logs "$pod"
143143 kubectl -n "$namespace" exec "$pod" -c zulip -- cat /var/log/zulip/errors.log
144+
145+ docker-compose-test :
146+ runs-on : ubuntu-latest
147+ timeout-minutes : 10
148+ needs :
149+ - build
150+ env :
151+ GITHUB_CI_IMAGE : ghcr.io/${{ github.repository }}:pr-${{ github.event.pull_request.number }}
152+ steps :
153+ - name : Checkout code
154+ uses : actions/checkout@v5
155+
156+ - name : Set up Docker Buildx
157+ uses : docker/setup-buildx-action@v3
158+
159+ - name : Verify Docker Compose config validation
160+ run : |
161+ docker compose \
162+ -f compose.yaml \
163+ -f ci/compose.override.yaml \
164+ --env-file ci/env \
165+ config
166+
167+ - name : Log in to GHCR
168+ uses : docker/login-action@v3
169+ with :
170+ registry : ghcr.io
171+ username : ${{ github.actor }}
172+ password : ${{ secrets.GITHUB_TOKEN }}
173+
174+ - name : Start Docker Compose services
175+ run : |
176+ docker compose \
177+ -f compose.yaml \
178+ -f ci/compose.override.yaml \
179+ -e GITHUB_CI_IMAGE=ghcr.io/${{ github.repository }}:pr-${{ github.event.pull_request.number }} \
180+ --env-file ci/env \
181+ up -d --no-build
182+
183+ - name : Wait for services to be healthy
184+ run : |
185+ echo "Waiting for zulip service to be healthy..."
186+ timeout 300 bash -c \
187+ 'until docker inspect --format "{{.State.Health.Status}}" $(docker compose ps -q zulip) | grep -q healthy; do sleep 5; done'
188+
189+ - name : Verify all services are running
190+ run : |
191+ docker compose ps
192+ # Check that no services are in a failed state
193+ if docker compose ps | grep -E "(Exit|Restarting)"; then
194+ exit 1
195+ fi
196+
197+ - name : Check service logs for critical errors
198+ if : success() || failure()
199+ continue-on-error : true
200+ run : |
201+ docker compose ps
202+ docker compose logs zulip
0 commit comments