2 Commits
Author SHA1 Message Date
Jens 3cfb2260cc Fix immutable release bootstrap for 0.3.17
release / verify-publish (push) Successful in 6m13s
deploy / deploy (push) Canceled after 0s
2026-08-12 13:35:02 +02:00
Jens b5045cf487 Document 0.3.16 deployment evidence
deploy / deploy (push) Canceled after 0s
2026-08-12 12:04:50 +02:00
8 changed files with 62 additions and 8 deletions
+3 -1
View File
@@ -10,8 +10,10 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: astral-sh/setup-uv@v6
- name: Install pinned uv
uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
with:
version: "0.11.12"
python-version: "3.13"
- name: Install verification browser
run: |
+8
View File
@@ -2,6 +2,14 @@
Alle betekenisvolle wijzigingen worden hier bijgehouden. Het project volgt voorlopig een pre-1.0 semantische versieaanpak.
## 0.3.17 - 2026-08-12
### Hersteld
- De Gitea-releasebootstrap gebruikt een immutable `setup-uv`-commit en een exacte
uv-versie; downloads lopen via de Astral-mirror en zijn niet langer afhankelijk
van de gelimiteerde GitHub Releases-API op het gedeelde runner-IP.
## 0.3.16 - 2026-08-12
### Hersteld
+5 -4
View File
@@ -8,11 +8,12 @@
VacatureRadar is een persoonlijke vacature-assistent voor België. De applicatie volgt toegestane werkgeversbronnen, ATS-paginas, feeds en vacaturemails, verwijdert dubbels en irrelevante resultaten en rangschikt de overblijvende kansen tegen jouw zoekprofiel. Jij behoudt altijd de controle: VacatureRadar helpt zoeken en opvolgen, maar solliciteert nooit automatisch.
**Actuele release: 0.3.16.** De volledige P0/P1-releasebasis en de publieke
**Actuele release: 0.3.17.** De volledige P0/P1-releasebasis en de publieke
demo-hardening zijn afgerond: 327 tests zijn groen, Microsoft 365 verwerkt platformmails via
app-only OAuth/XOAUTH2 en de productie-installatie draait vanaf een immutable
image in de private Gitea-containerregistry. Het controleerbare acceptatiebewijs
staat in [Finale acceptance](docs/audit/FINAL_ACCEPTANCE.md).
app-only OAuth/XOAUTH2. Release 0.3.17 herstelt bovendien de reproduceerbare
private-registrypublicatie zonder afhankelijkheid van de GitHub Releases-API.
Het controleerbare acceptatiebewijs staat in
[Finale acceptance](docs/audit/FINAL_ACCEPTANCE.md).
![Dagoverzicht van VacatureRadar in licht thema](docs/screenshots/readme/dashboard-light.png)
+1 -1
View File
@@ -139,7 +139,7 @@ CSRF_TRUSTED_ORIGINS = merge_unique(
)
TIME_ZONE = os.getenv("DJANGO_TIME_ZONE", "Europe/Brussels")
VACATURERADAR_OWNER_NAME = os.getenv("VACATURERADAR_OWNER_NAME", "Jens").strip()[:40] or "Jens"
VACATURERADAR_VERSION = os.getenv("VACATURERADAR_VERSION", "0.3.16").strip() or "0.3.16"
VACATURERADAR_VERSION = os.getenv("VACATURERADAR_VERSION", "0.3.17").strip() or "0.3.17"
LANGUAGE_CODE = "nl-be"
USE_I18N = True
USE_TZ = True
+1 -1
View File
@@ -9,7 +9,7 @@ DJANGO_ALLOWED_HOSTS=vacatureradar.example.be,127.0.0.1,localhost
DJANGO_CSRF_TRUSTED_ORIGINS=https://vacatureradar.example.be
DJANGO_TIME_ZONE=Europe/Brussels
VACATURERADAR_OWNER_NAME=Jens
VACATURERADAR_VERSION=0.3.16
VACATURERADAR_VERSION=0.3.17
POSTGRES_DB=vacatureradar
POSTGRES_USER=vacatureradar
+23
View File
@@ -2417,3 +2417,26 @@ tasks:
opvolging en 9 fictieve mailboxkoppelingen; EMAIL-bronnen en demo-mailboxen zijn uit de verkeerde schedulers
en activityfeeds uitgesloten, statuscopy en loginplaceholder zijn gecorrigeerd. Gerichte 51 tests en volledige
gate met 327 tests groen, 84,04% dekking.
- id: VR-230
title: Herstel de immutable Gitea-releasepublicatie
status: ready
priority: P0
requirement_ids:
- NFR-009
depends_on:
- VR-229
summary: Verwijder de externe GitHub-API-rate-limit uit de releasebootstrap en publiceer de actuele productiebuild
opnieuw als aantoonbaar immutable private-registryimage.
acceptance_criteria:
- De uv-bootstrap is op een immutable actioncommit en een exacte uv-versie gepind.
- De releaseworkflow gebruikt voor uv-downloads geen GitHub Releases-API die op een gedeeld runner-IP kan limiteren.
- Gitea Actions publiceert een private registryimage met digest, SBOM, checksums en release notes.
- Unraid is op de gepubliceerde digest gepind en live health/readiness slagen.
verification:
- uv run pytest tests/unit/test_deployment_configuration.py
- ./scripts/codex_verify.sh
- Gitea Actions releasebewijs en live Unraid health/readiness
primary_paths:
- .gitea/workflows/release.yml
- tests/unit/test_deployment_configuration.py
- docs/audit/FINAL_ACCEPTANCE.md
+13 -1
View File
@@ -35,7 +35,19 @@ Visuele demo-hardening `VR-229` op 2026-08-12:
- visuele audit: negen kernroutes groen in dark/light op 390×844, 1280×600,
1440×900 en 3440×1440 zonder overflow, heading- of consolefouten;
- gerichte regressies: 51 tests groen; volledige gate: 327 tests, 0 failures,
0 skips en 84,04% branch-aware dekking. Volgende uitvoerbare taak: geen.
0 skips en 84,04% branch-aware dekking;
- commit `a6c8a79` en tag `v0.3.16` zijn naar Gitea gepusht; vóór uitrol is onder
`/mnt/user/appdata/VacatureRadar/local/backups/release-0.3.16-20260812T094608Z`
een checksum-geldige database- en configuratieback-up gemaakt;
- Unraid draait healthy zonder restarts op lokaal gebouwde image
`sha256:c98001c063e8358dc59dfc175c574187b36021dd5a81f44e3ba982a28c9f9341`;
een live sessiesmoke bevestigde dashboard 200, zes demomatches, negen
platformmailboxen, actieve ingress, nul oude policyfouten en geen
wachtwoord-maskplaceholder;
- de Gitea-releaseworkflow faalde tweemaal in stap `astral-sh/setup-uv@v6` en
publiceerde daarom nog geen 0.3.16-registrymanifest. De bewezen immutable
registryrelease blijft 0.3.15; runnerdiagnose en herpublicatie vereisen opnieuw
bereikbare Unraid-beheertoegang. Volgende uitvoerbare backlogtaak: geen.
README-update op 2026-07-30:
@@ -128,3 +128,11 @@ def test_deploy_uses_selected_environment_file_for_compose() -> None:
assert 'export VACATURERADAR_ENV_FILE="$env_file"' in deploy_script
assert 'docker compose --env-file "$env_file" -f "$compose_file" up -d --build' in deploy_script
assert "waarde uit ${env_file}" in deploy_script
def test_release_uv_install_is_immutable_and_does_not_require_github_api() -> None:
workflow = (ROOT / ".gitea" / "workflows" / "release.yml").read_text(encoding="utf-8")
assert "astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0" in workflow
assert 'version: "0.11.12"' in workflow
assert "astral-sh/setup-uv@v6" not in workflow