Skip to content

BREAKING CHANGE: Overhaul repo to align with pbtar's db and api service #5

BREAKING CHANGE: Overhaul repo to align with pbtar's db and api service

BREAKING CHANGE: Overhaul repo to align with pbtar's db and api service #5

Workflow file for this run

name: Test DB service
on:
push:
branches: [ main ]
pull_request:
workflow_dispatch:
jobs:
test-database:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Start PostgreSQL database
run: |
docker compose up -d db
# Wait for the database to be ready (using the healthcheck)
attempt=1
max_attempts=30
until docker compose ps | grep "db" | grep -q "healthy" || [ $attempt -eq $max_attempts ]
do
echo "Waiting for database to be ready... (attempt $attempt/$max_attempts)"
sleep 2
attempt=$((attempt+1))
done
if [ $attempt -eq $max_attempts ]; then
echo "Database failed to become ready in time"
docker compose logs db
exit 1
fi
echo "Database is ready!"
docker compose ps
- name: Run database initialization check
run: |
# Check if the database initialized correctly
docker exec $(docker compose ps -q db) psql -U postgres -d poc -c "SELECT version(), current_database();"
# List schemas and tables to verify initialization
docker exec $(docker compose ps -q db) psql -U postgres -d poc -c "SELECT schema_name FROM information_schema.schemata WHERE schema_name = 'poc';"
docker exec $(docker compose ps -q db) psql -U postgres -d poc -c "SELECT table_name FROM information_schema.tables WHERE table_schema = 'poc';"
- name: Run test_scenario.sql
run: |
# Use -v ON_ERROR_STOP=1 to make psql exit with non-zero status on error
cat database/test/test_scenario.sql | docker exec -i $(docker compose ps -q db) psql -U postgres -d poc -v ON_ERROR_STOP=1
if [ $? -ne 0 ]; then
echo "❌ test_scenario.sql failed"
exit 1
fi
echo "✅ test_scenario.sql executed successfully"
- name: Run read.sql
run: |
cat database/test/read.sql | docker exec -i $(docker compose ps -q db) psql -U postgres -d poc -v ON_ERROR_STOP=1
if [ $? -ne 0 ]; then
echo "❌ read.sql failed"
exit 1
fi
echo "✅ read.sql executed successfully"
- name: Run update.sql
run: |
cat database/test/update.sql | docker exec -i $(docker compose ps -q db) psql -U postgres -d poc -v ON_ERROR_STOP=1
if [ $? -ne 0 ]; then
echo "❌ update.sql failed"
exit 1
fi
echo "✅ update.sql executed successfully"
- name: Run delete.sql
run: |
cat database/test/delete.sql | docker exec -i $(docker compose ps -q db) psql -U postgres -d poc -v ON_ERROR_STOP=1
if [ $? -ne 0 ]; then
echo "❌ delete.sql failed"
exit 1
fi
echo "✅ delete.sql executed successfully"
- name: Database logs on failure
if: failure()
run: docker compose logs db
- name: Clean up
if: always()
run: docker compose down -v