BREAKING CHANGE: Overhaul repo to align with pbtar's db and api service #5
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 |