Skip to content

Commit 5166da3

Browse files
authored
Merge pull request #137 from PolicyEngine/fix/fix-integ-test
Fix: Use SUPABASE_DB_URL in db-reset workflow
2 parents dc27e62 + 25145f0 commit 5166da3

2 files changed

Lines changed: 43 additions & 24 deletions

File tree

.github/workflows/db-reset.yml

Lines changed: 42 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,15 @@
1-
name: Reset production database
1+
name: Reset database
22

33
on:
44
workflow_dispatch:
55
inputs:
6+
target:
7+
description: "Target database"
8+
required: true
9+
type: choice
10+
options:
11+
- staging
12+
- production
613
mode:
714
description: "Seeding mode"
815
required: true
@@ -12,19 +19,23 @@ on:
1219
- lite
1320
- full
1421
confirm:
15-
description: "Type 'reset-prod' to confirm"
22+
description: "Type 'reset-staging' or 'reset-prod' to confirm"
1623
required: true
1724
type: string
1825
pull_request:
1926
paths:
2027
- ".github/workflows/db-reset.yml"
2128

2229
jobs:
23-
# Validation job - runs on PR to test connectivity (no environment = no approval needed)
30+
# Validation job - runs on PR to test connectivity against both environments
2431
validate:
25-
name: Validate database connectivity
32+
name: Validate ${{ matrix.environment }} database connectivity
2633
runs-on: ubuntu-latest
2734
if: github.event_name == 'pull_request'
35+
environment: ${{ matrix.environment }}
36+
strategy:
37+
matrix:
38+
environment: [staging, production]
2839

2940
steps:
3041
- name: Checkout code
@@ -41,31 +52,37 @@ jobs:
4152

4253
- name: Test database connectivity
4354
env:
44-
SUPABASE_DB_URL: ${{ secrets.SUPABASE_POOLER_URL }}
55+
SUPABASE_DB_URL: ${{ secrets.SUPABASE_DB_URL }}
4556
run: |
46-
echo "Testing database connectivity..."
57+
echo "Testing ${{ matrix.environment }} database connectivity..."
4758
uv run python -c "
4859
from policyengine_api.config.settings import settings
4960
from sqlmodel import create_engine, text
5061
engine = create_engine(settings.database_url, echo=False)
5162
with engine.connect() as conn:
5263
result = conn.execute(text('SELECT 1'))
53-
print('✅ Database connection successful')
64+
print('✅ ${{ matrix.environment }} database connection successful')
5465
"
5566
5667
# Reset job - only runs on manual trigger with confirmation
5768
reset-db:
58-
name: Reset and reseed database
69+
name: Reset and reseed ${{ inputs.target }} database
5970
runs-on: ubuntu-latest
6071
if: github.event_name == 'workflow_dispatch'
61-
environment: production
72+
environment: ${{ inputs.target }}
6273

6374
steps:
6475
- name: Verify confirmation
65-
if: ${{ github.event.inputs.confirm != 'reset-prod' }}
6676
run: |
67-
echo "❌ Confirmation failed. You must type 'reset-prod' to proceed."
68-
exit 1
77+
EXPECTED="reset-staging"
78+
if [ "${{ inputs.target }}" = "production" ]; then
79+
EXPECTED="reset-prod"
80+
fi
81+
if [ "${{ inputs.confirm }}" != "$EXPECTED" ]; then
82+
echo "❌ Confirmation failed. You must type '$EXPECTED' to proceed."
83+
exit 1
84+
fi
85+
echo "✅ Confirmation verified for ${{ inputs.target }}"
6986
7087
- name: Checkout code
7188
uses: actions/checkout@v4
@@ -81,48 +98,49 @@ jobs:
8198

8299
- name: Reset database (init)
83100
env:
84-
SUPABASE_DB_URL: ${{ secrets.SUPABASE_POOLER_URL }}
101+
SUPABASE_DB_URL: ${{ secrets.SUPABASE_DB_URL }}
85102
SUPABASE_URL: ${{ secrets.SUPABASE_URL }}
86103
SUPABASE_KEY: ${{ secrets.SUPABASE_KEY }}
87104
SUPABASE_SECRET_KEY: ${{ secrets.SUPABASE_SECRET_KEY }}
88105
LOGFIRE_TOKEN: ${{ secrets.LOGFIRE_TOKEN }}
89-
LOGFIRE_ENVIRONMENT: prod
106+
LOGFIRE_ENVIRONMENT: ${{ inputs.target }}
90107
run: |
91-
echo "Resetting database tables..."
108+
echo "Resetting ${{ inputs.target }} database tables..."
92109
echo "yes" | uv run python scripts/init.py --reset
93110
94111
- name: Seed database (lite)
95-
if: ${{ github.event.inputs.mode == 'lite' }}
112+
if: ${{ inputs.mode == 'lite' }}
96113
env:
97-
SUPABASE_DB_URL: ${{ secrets.SUPABASE_POOLER_URL }}
114+
SUPABASE_DB_URL: ${{ secrets.SUPABASE_DB_URL }}
98115
SUPABASE_URL: ${{ secrets.SUPABASE_URL }}
99116
SUPABASE_KEY: ${{ secrets.SUPABASE_KEY }}
100117
SUPABASE_SECRET_KEY: ${{ secrets.SUPABASE_SECRET_KEY }}
101118
STORAGE_BUCKET: ${{ vars.STORAGE_BUCKET }}
102119
LOGFIRE_TOKEN: ${{ secrets.LOGFIRE_TOKEN }}
103-
LOGFIRE_ENVIRONMENT: prod
120+
LOGFIRE_ENVIRONMENT: ${{ inputs.target }}
104121
HUGGING_FACE_TOKEN: ${{ secrets.HUGGING_FACE_TOKEN }}
105122
run: |
106-
echo "Seeding database (lite mode - fewer params, includes datasets)..."
123+
echo "Seeding ${{ inputs.target }} database (lite mode)..."
107124
uv run python scripts/seed.py --lite
108125
109126
- name: Seed database (full)
110-
if: ${{ github.event.inputs.mode == 'full' }}
127+
if: ${{ inputs.mode == 'full' }}
111128
env:
112-
SUPABASE_DB_URL: ${{ secrets.SUPABASE_POOLER_URL }}
129+
SUPABASE_DB_URL: ${{ secrets.SUPABASE_DB_URL }}
113130
SUPABASE_URL: ${{ secrets.SUPABASE_URL }}
114131
SUPABASE_KEY: ${{ secrets.SUPABASE_KEY }}
115132
SUPABASE_SECRET_KEY: ${{ secrets.SUPABASE_SECRET_KEY }}
116133
HUGGING_FACE_TOKEN: ${{ secrets.HUGGING_FACE_TOKEN }}
117134
STORAGE_BUCKET: ${{ vars.STORAGE_BUCKET }}
118135
LOGFIRE_TOKEN: ${{ secrets.LOGFIRE_TOKEN }}
119-
LOGFIRE_ENVIRONMENT: prod
136+
LOGFIRE_ENVIRONMENT: ${{ inputs.target }}
120137
run: |
121-
echo "Seeding database (full mode - includes datasets)..."
138+
echo "Seeding ${{ inputs.target }} database (full mode)..."
122139
uv run python scripts/seed.py
123140
124141
- name: Summary
125142
run: |
126143
echo "✅ Database reset complete!"
127-
echo "Mode: ${{ github.event.inputs.mode }}"
144+
echo "Target: ${{ inputs.target }}"
145+
echo "Mode: ${{ inputs.mode }}"
128146
echo "Triggered by: ${{ github.actor }}"

changelog.d/137.changed

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Support staging and production targets in db-reset workflow with environment-scoped secrets

0 commit comments

Comments
 (0)