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 runs-on: ubuntu-latest
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- uses: astral-sh/setup-uv@v6 - name: Install pinned uv
uses: astral-sh/setup-uv@08807647e7069bb48b6ef5acd8ec9567f424441b # v8.1.0
with: with:
version: "0.11.12"
python-version: "3.13" python-version: "3.13"
- name: Install verification browser - name: Install verification browser
run: | run: |
+8
View File
@@ -2,6 +2,14 @@
Alle betekenisvolle wijzigingen worden hier bijgehouden. Het project volgt voorlopig een pre-1.0 semantische versieaanpak. 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 ## 0.3.16 - 2026-08-12
### Hersteld ### 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. 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 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 app-only OAuth/XOAUTH2. Release 0.3.17 herstelt bovendien de reproduceerbare
image in de private Gitea-containerregistry. Het controleerbare acceptatiebewijs private-registrypublicatie zonder afhankelijkheid van de GitHub Releases-API.
staat in [Finale acceptance](docs/audit/FINAL_ACCEPTANCE.md). Het controleerbare acceptatiebewijs staat in
[Finale acceptance](docs/audit/FINAL_ACCEPTANCE.md).
![Dagoverzicht van VacatureRadar in licht thema](docs/screenshots/readme/dashboard-light.png) ![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") TIME_ZONE = os.getenv("DJANGO_TIME_ZONE", "Europe/Brussels")
VACATURERADAR_OWNER_NAME = os.getenv("VACATURERADAR_OWNER_NAME", "Jens").strip()[:40] or "Jens" 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" LANGUAGE_CODE = "nl-be"
USE_I18N = True USE_I18N = True
USE_TZ = 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_CSRF_TRUSTED_ORIGINS=https://vacatureradar.example.be
DJANGO_TIME_ZONE=Europe/Brussels DJANGO_TIME_ZONE=Europe/Brussels
VACATURERADAR_OWNER_NAME=Jens VACATURERADAR_OWNER_NAME=Jens
VACATURERADAR_VERSION=0.3.16 VACATURERADAR_VERSION=0.3.17
POSTGRES_DB=vacatureradar POSTGRES_DB=vacatureradar
POSTGRES_USER=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 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 en activityfeeds uitgesloten, statuscopy en loginplaceholder zijn gecorrigeerd. Gerichte 51 tests en volledige
gate met 327 tests groen, 84,04% dekking. 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, - visuele audit: negen kernroutes groen in dark/light op 390×844, 1280×600,
1440×900 en 3440×1440 zonder overflow, heading- of consolefouten; 1440×900 en 3440×1440 zonder overflow, heading- of consolefouten;
- gerichte regressies: 51 tests groen; volledige gate: 327 tests, 0 failures, - 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: 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 '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 'docker compose --env-file "$env_file" -f "$compose_file" up -d --build' in deploy_script
assert "waarde uit ${env_file}" 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