Dockerize Django app with dev/beta/prod env config and uv.
CI / test (pull_request) Successful in 7s

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-02 06:19:45 -05:00
parent c8574d76d4
commit b5275f1b7e
22 changed files with 1124 additions and 201 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
+32 -6
View File
@@ -1,5 +1,6 @@
name: Deploy Company Site
# Deploy pipeline runs only on pushes to master (never on pull requests).
on:
push:
branches: [master]
@@ -11,20 +12,45 @@ jobs:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Python environment
- name: Install uv
run: |
python3 -m venv .venv
.venv/bin/pip install --upgrade pip
.venv/bin/pip install -r requirements.txt
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
../.venv/bin/python manage.py test
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:
needs: test
runs-on: self-hosted
needs: [test, docker]
steps:
- name: Checkout
uses: actions/checkout@v4