Dockerize Django app with dev/beta/prod env config and uv.
CI / test (pull_request) Successful in 11s
Unit Tests / test (pull_request) Failing after 6s

Replace hardcoded settings with environment-driven config, add Docker
compose for local and production deploys, migrate from pip to uv, and
split Gitea workflows so PRs run tests only while master pushes deploy.
This commit is contained in:
2026-07-07 05:58:44 -05:00
parent 7dd5ec3be1
commit 115c5ae319
22 changed files with 1139 additions and 198 deletions
+28
View File
@@ -0,0 +1,28 @@
name: CI
on:
pull_request:
branches: [master]
jobs:
test:
runs-on: self-hosted
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install uv
run: |
curl -LsSf https://astral.sh/uv/install.sh | sh
echo "$HOME/.local/bin" >> "$GITHUB_PATH"
- name: Install dependencies
run: uv sync --frozen
- name: Run unit tests
env:
DJANGO_ENV: dev
DJANGO_SECRET_KEY: test-secret-key
run: |
cd company_site
uv run python manage.py test
+44
View File
@@ -1,5 +1,6 @@
name: Deploy Company Site
# Deploy pipeline runs only on pushes to master (never on pull requests).
on:
workflow_run:
workflows: [Unit Tests]
@@ -7,9 +8,52 @@ on:
branches: [master]
jobs:
test:
runs-on: self-hosted
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install uv
run: |
curl -LsSf https://astral.sh/uv/install.sh | sh
echo "$HOME/.local/bin" >> "$GITHUB_PATH"
- name: Install dependencies
run: uv sync --frozen
- name: Run unit tests
env:
DJANGO_ENV: dev
DJANGO_SECRET_KEY: test-secret-key
run: |
cd company_site
uv run python manage.py test
docker:
runs-on: self-hosted
needs: test
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Build Docker image
run: docker compose build
- name: Run containerized tests
run: |
docker compose up -d db
docker compose run --rm --entrypoint "" \
-e DJANGO_ENV=dev \
-e DJANGO_SECRET_KEY=test-secret-key \
-e DATABASE_URL=postgres://company_site:company_site@db:5432/company_site \
web uv run python manage.py test
docker compose down
deploy:
if: gitea.event.workflow_run.conclusion == 'success' && gitea.event.workflow_run.event == 'push'
runs-on: self-hosted
needs: [test, docker]
steps:
- name: Checkout
uses: actions/checkout@v4