Skip to content

Commit f3da74e

Browse files
committed
Move postgres job to not use docker
1 parent ded7eee commit f3da74e

File tree

1 file changed

+72
-28
lines changed

1 file changed

+72
-28
lines changed

.github/workflows/database.yml

Lines changed: 72 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -50,31 +50,75 @@ jobs:
5050
run: stat db.sqlite3
5151
- name: Test data
5252
run: curl -Ss http://localhost:8000/api/v2/pokemon/1/ | grep -q 'bulbasaur'
53-
# postgres:
54-
# runs-on: ubuntu-latest
55-
# steps:
56-
# - name: Checkout
57-
# uses: actions/checkout@v5
58-
# with:
59-
# submodules: recursive
60-
# - name: Install uv
61-
# uses: astral-sh/setup-uv@v7
62-
# - name: Build
63-
# run: |
64-
# docker compose -f docker-compose.yml -f docker-compose-dev.yml up -d
65-
# make docker-migrate
66-
# make docker-build-db
67-
# - name: Dump DB
68-
# run: docker compose exec -T -u postgres db sh -c "cd /tmp && pg_dump -h localhost -Fc -U ash -N 'hdb_*' pokeapi > pokeapi.dump"
69-
# - name: Copy dump
70-
# run: docker compose cp db:/tmp/pokeapi.dump ./
71-
# - name: Down services
72-
# run: docker compose -f docker-compose.yml -f docker-compose-dev.yml down -v
73-
# - name: Start services
74-
# run: docker compose -f docker-compose.yml -f docker-compose-dev.yml up -d
75-
# - name: Import database
76-
# run: |
77-
# docker compose cp ./pokeapi.dump db:/tmp/
78-
# docker compose exec -T -u postgres db sh -c "cd /tmp && pg_restore -h localhost -U ash -d pokeapi pokeapi.dump"
79-
# - name: Test data
80-
# run: curl -Ss http://localhost/api/v2/pokemon/1/ | grep -q 'bulbasaur'
53+
postgres:
54+
runs-on: ubuntu-latest
55+
services:
56+
postgres:
57+
image: postgres:16
58+
env:
59+
POSTGRES_USER: ash
60+
POSTGRES_PASSWORD: pokemon
61+
POSTGRES_DB: pokeapi
62+
options: >-
63+
--health-cmd pg_isready
64+
--health-interval 10s
65+
--health-timeout 5s
66+
--health-retries 5
67+
ports:
68+
- 5432:5432
69+
env:
70+
DATABASE_URL: postgresql://ash:pokemon@localhost:5432/pokeapi
71+
steps:
72+
- name: Checkout
73+
uses: actions/checkout@v5
74+
with:
75+
submodules: recursive
76+
- name: Install uv
77+
uses: astral-sh/setup-uv@v7
78+
- name: Install dependencies
79+
run: make install
80+
- name: Run migrations
81+
run: uv run manage.py migrate --settings=config.settings
82+
env:
83+
DATABASES_DEFAULT_ENGINE: django.db.backends.postgresql
84+
DATABASES_DEFAULT_NAME: pokeapi
85+
DATABASES_DEFAULT_USER: ash
86+
DATABASES_DEFAULT_PASSWORD: pokemon
87+
DATABASES_DEFAULT_HOST: localhost
88+
DATABASES_DEFAULT_PORT: 5432
89+
- name: Build database
90+
run: uv run manage.py shell --settings=config.settings -c "from data.v2.build import build_all; build_all()"
91+
env:
92+
DATABASES_DEFAULT_ENGINE: django.db.backends.postgresql
93+
DATABASES_DEFAULT_NAME: pokeapi
94+
DATABASES_DEFAULT_USER: ash
95+
DATABASES_DEFAULT_PASSWORD: pokemon
96+
DATABASES_DEFAULT_HOST: localhost
97+
DATABASES_DEFAULT_PORT: 5432
98+
- name: Dump DB
99+
run: pg_dump -h localhost -U ash -Fc -N 'hdb_*' pokeapi > pokeapi.dump
100+
env:
101+
PGPASSWORD: pokemon
102+
- name: Drop and recreate database
103+
run: |
104+
psql -h localhost -U ash -c "DROP DATABASE pokeapi;"
105+
psql -h localhost -U ash -c "CREATE DATABASE pokeapi;"
106+
env:
107+
PGPASSWORD: pokemon
108+
- name: Import database
109+
run: pg_restore -h localhost -U ash -d pokeapi pokeapi.dump
110+
env:
111+
PGPASSWORD: pokemon
112+
- name: Start server
113+
run: |
114+
nohup uv run manage.py runserver --settings=config.settings &
115+
sleep 5
116+
env:
117+
DATABASES_DEFAULT_ENGINE: django.db.backends.postgresql
118+
DATABASES_DEFAULT_NAME: pokeapi
119+
DATABASES_DEFAULT_USER: ash
120+
DATABASES_DEFAULT_PASSWORD: pokemon
121+
DATABASES_DEFAULT_HOST: localhost
122+
DATABASES_DEFAULT_PORT: 5432
123+
- name: Test data
124+
run: curl -Ss http://localhost:8000/api/v2/pokemon/1/ | grep -q 'bulbasaur'

0 commit comments

Comments
 (0)