API van het OSS register (oss.developer.overheid.nl)
- API version: 1.0.0
-
Start de afhankelijkheden:
docker compose up -d
-
Start de server:
go run cmd/main.go
De API luistert standaard op poort 1337.
Nieuwe repositories worden na een succesvolle POST of PUT ook naar Typesense gestuurd, zodat ze vindbaar zijn in de zoekfunctie. Bij het opstarten van de server worden bestaande actieve repositories bovendien opnieuw naar Typesense gepubliceerd. Stel hiervoor de volgende omgevingsvariabelen in:
TYPESENSE_ENDPOINT: basis-URL van de Typesense cluster (bijv.https://search.don.apps.digilab.network).TYPESENSE_API_KEY: API key met schrijfrechten.TYPESENSE_COLLECTION: naam van de collectie (standaardoss-register).TYPESENSE_DETAIL_BASE_URL: basis-URL voor detailpagina's in de frontend (standaardhttps://oss.developer.overheid.nl/repositories).ENABLE_TYPESENSE: zet opfalseom Typesense indexing volledig uit te schakelen (standaardtrue).
De applicatie gebruikt PostgreSQL. De docker-compose start automatisch een Postgres container met bovenstaande credentials.
Voor het beheren van de database kun je optioneel pgAdmin gebruiken:
docker run --rm -p 5050:80 \
-e PGADMIN_DEFAULT_EMAIL=admin@example.com \
-e PGADMIN_DEFAULT_PASSWORD=admin \
dpage/pgadmin4Navigeer naar http://localhost:5050, voeg een nieuwe server toe en gebruik de waarden:
- Host:
localhost - Port:
5432 - Username:
don - Password:
don - Database:
don_v1
Met scripts/sync_organisations.sh kun je organisaties en git-organisaties van
een bronomgeving naar een doelomgeving pompen. Dit is handig om bijvoorbeeld
data uit productie of acceptatie over te zetten naar een testomgeving.
Het script leest uit de bron:
GET /organisationsGET /git-organisations
en schrijft naar het doel:
POST /organisationsPOST /git-organisations
Gebruik basis-URL's inclusief /oss-register/v1.
SOURCE_BASE_URL="https://api.developer.overheid.nl/oss-register/v1" \
TARGET_BASE_URL="https://api.don.projects.digilab.network/oss-register/v1" \
SOURCE_API_KEY="..." \
TARGET_BEARER_TOKEN="..." \
./scripts/sync_organisations.shVoor de bron kun je SOURCE_API_KEY of SOURCE_BEARER_TOKEN gebruiken. Voor
het doel is TARGET_BEARER_TOKEN verplicht. Het script volgt paginering via de
Link header en schrijft records die niet verwerkt konden worden naar
sync-organisations-errors.json.
Handige opties:
PER_PAGE=100: aantal records per pagina.SLEEP_SECONDS=0: pauze tussen POST requests.OUT=sync-organisations-errors.json: pad voor het foutenbestand.SKIP_ORGANISATIONS=1: alleen git-organisaties synchroniseren.SKIP_GIT_ORGANISATIONS=1: alleen organisaties synchroniseren.
Git-organisaties verwijzen naar een bestaande organisatie via
organisation.uri. Synchroniseer organisaties dus eerst, tenzij die al in de
doelomgeving bestaan.
De deployment van deze site verloopt via GitHub Actions en een aparte infra repository.
- Organization variable
INFRA_REPO, bijvoorbeelddeveloper-overheid-nl/don-infra. - Repository variable
KUSTOMIZE_PATH, met als basispad bijvoorbeeldapps/api/overlays/. - Secrets
RELEASE_PROCES_APP_IDenRELEASE_PROCES_APP_PRIVATE_KEYvoor het aanpassen van de infra repository.
De testdeploy draait via
.github/workflows/deploy-test.yml.
- De workflow draait op pushes naar branches behalve
main. - Alleen commits met
[deploy-test]in de commit message worden echt gedeployed. - Er wordt een image gebouwd en gepusht naar
ghcr.io/<owner>/<repo>met tagstesten de commit SHA. - Daarna wordt in
INFRA_REPOhet bestand${KUSTOMIZE_PATH}test/kustomization.yamlbijgewerkt naar de nieuwe image tag en direct gecommit.
Voorbeeld commit message:
feat: pas content aan [deploy-test]
De productiedeploy draait via
.github/workflows/deploy-prod.yml.
- De workflow draait bij een push naar
main. - Er wordt in
INFRA_REPOeen release branch aangemaakt. - In
${KUSTOMIZE_PATH}prod/kustomization.yamlwordt de image tag bijgewerkt naar de commit SHA van deze repository. - Daarna wordt automatisch een pull request in de infra repository geopend.
- De productie-uitrol gebeurt door die pull request te mergen.
Een contribution of pull request leidt niet automatisch tot een deployment.
- Een pull request triggert wel CI, waaronder de build en JSON-validatie.
- De build in
.github/workflows/go-ci.ymlbouwt voor een pull request een Docker image als controle, maar pusht dat image niet naar GHCR en past de infra repository niet aan. - Er is dus geen automatische preview-omgeving per pull request.
- Een testdeploy gebeurt pas na een push naar een branch in deze repository met
[deploy-test]in de commit message. - Die testdeploy gebruikt repository- en organization-variables en secrets om
ook
INFRA_REPOaan te passen. Daardoor is dit pad in de praktijk bedoeld voor maintainers of contributors met een branch in deze repository.