Skip to content

Суслов Артём Евгеньевич #282

Суслов Артём Евгеньевич

Суслов Артём Евгеньевич #282

Workflow file for this run

name: Docker Compose Test
on:
pull_request:
branches: [ main ]
jobs:
test-compose:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Start services
run: docker compose -f docker-compose.base.yml -f docker-compose.prod.yml up -d
- name: Check data base initialization script status
run: |
sleep 5
exit_code=$(docker compose -f docker-compose.base.yml -f docker-compose.prod.yml ps -a --format json | jq -r 'select(.Service=="db-init") | .ExitCode')
if [[ "$exit_code" != "0" ]]; then
echo "::error::DB initialization script failed with exit code $exit_code!"
docker compose -f docker-compose.base.yml -f docker-compose.prod.yml logs db-init
exit 1
fi
echo "DB initialization script completed successfully."
- name: Wait for web to be ready
run: |
timeout=60
while ! curl -f http://localhost:5000 >/dev/null 2>&1; do
((timeout--))
if [ $timeout -eq 0 ]; then
echo "Web service failed to start"
exit 1
fi
sleep 1
done
- name: Test web response
run: |
response=$(curl -s http://localhost:5000/ping)
if [[ "$response" != "pong" ]]; then
echo "Expected 'pong', got: $response"
exit 1
fi
echo "Web test passed!"
- name: Test PostgreSQL connection
run: |
docker compose -f docker-compose.base.yml -f docker-compose.prod.yml exec -T db pg_isready -U user -d mydb
- name: Show logs on failure
if: failure()
run: docker compose -f docker-compose.base.yml -f docker-compose.prod.yml logs