@@ -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