Monitorering av automasjon
Beskrivelse
Denne sida forklarar korleis du kan monitorere at generering og publisering av artefakter fungerer som forventa.
GitHub Actions-loggar (primær monitorering)
I PoC-fasen er GitHub Actions-loggar den primære monitoreringsmekanismen.
Kvar finn eg loggane?
Hovudoversikt over alle workflows:
Spesifikke workflows:
| Workflow | URL | Kva det gjer |
|---|---|---|
generate.yml |
actions/workflows/generate.yml | Validerer, genererer artefakter og publiserer til GitHub Pages |
validate.yml |
actions/workflows/validate.yml | Nattleg validering (02:00 UTC) som lagrar loggar til src/linkml/*/validation/ og opprettar PR ved endringar |
release-please.yml |
actions/workflows/release-please.yml | Opprettar release-PR automatisk |
release.yml |
actions/workflows/release.yml | Byggjer og pushar container-images ved release |
Release-arbeidsflyt
Repoet brukar release-please for å automatisere release-PR-oppretting basert på Conventional Commits. Arbeidsflyten er todelt: automatisk PR-oppretting og manuell release-publisering.
Flytdiagram
flowchart TD
Start([Push til main<br/>feat: eller fix:])
RPCheck{Commit-type<br/>release-utløysande?}
RPRun[release-please<br/>workflow køyrer]
RPOpen{Open release-PR<br/>finst?}
PRCreate[Opprettar ny<br/>release-PR]
PRUpdate[Oppdaterer<br/>eksisterande PR]
WaitMerge([Brukar mergar<br/>release-PR manuelt])
CreateRelease([Brukar opprettar<br/>GitHub Release manuelt])
Done([Ferdig])
Start --> RPCheck
RPCheck -->|Ja| RPRun
RPCheck -->|Nei: style/docs/<br/>chore/test/ci/build/<br/>perf/refactor| Done
RPRun --> RPOpen
RPOpen -->|Nei| PRCreate
RPOpen -->|Ja| PRUpdate
PRCreate --> WaitMerge
PRUpdate --> WaitMerge
WaitMerge --> CreateRelease
CreateRelease --> Done
classDef automatic fill:#e1f5e1,stroke:#4caf50,stroke-width:2px
classDef manual fill:#fff9c4,stroke:#fbc02d,stroke-width:2px
classDef decision fill:#e3f2fd,stroke:#2196f3,stroke-width:2px
class RPRun,PRCreate,PRUpdate automatic
class WaitMerge,CreateRelease manual
class RPCheck,RPOpen decision
Fargekodar:
- 🟢 Grøn — automatisk prosess (køyrer utan brukarinngripen)
- 🟡 Gul — manuell prosess (krev brukarhandling)
- 🔵 Blå — avgjerdspunkt (logikk i workflow)
Manuell release-publisering
Etter at release-PR er merga, må brukar opprette GitHub Release manuelt. Dette er nødvendig fordi GITHUB_TOKEN i GitHub Actions manglar tilgang til å opprette releases i dette repoet.
Alternativ 1: Via GitHub UI
- Gå til Releases
- Klikk Draft a new release
- Klikk Choose a tag → skriv inn tag-namn (t.d.
samt-bu-v1.0.4) → klikk Create new tag: samt-bu-v1.0.4 on publish - Fyll inn:
- Release title:
samt-bu 1.0.4 - Description: Kopier frå
CHANGELOG.mdeller skriv manuelt - Klikk Publish release
Tips: Tag-namn og versjon finn du i release-PR-en (t.d. PR #25) eller i .release-please-manifest.json.
Alternativ 2: Via GitHub CLI
# Hent versjon frå manifest
VERSION=$(jq -r '."src/linkml/<domain>/<modell>"' .release-please-manifest.json)
COMPONENT="<modell>"
# Opprett release
gh release create "${COMPONENT}-v${VERSION}" \
--title "${COMPONENT} ${VERSION}" \
--notes "Release ${VERSION} for ${COMPONENT}"
Eksempel for samt-bu:
VERSION=$(jq -r '."src/linkml/samt/samt-bu"' .release-please-manifest.json)
gh release create "samt-bu-v${VERSION}" \
--title "samt-bu ${VERSION}" \
--notes "Release ${VERSION} for samt-bu"
Sjå CONTRIBUTING.md for fullstendig prosedyre.
Kva viser loggane?
generate.yml (viktigaste workflow):
- Validering:
make lint— LinkML-schema lintmake mcp-linkml-valider-modell— Policy-validering (bronze/silver/gold/felles-begrepskatalog/felles-datakatalog)-
make validate-instance— Instansvalidering av eksempelfiler -
Generering:
make <domain>— Genererer SHACL, JSON Schema, OWL, Python, Protobuf, dokumentasjon, diagram-
make convert-data— Konverterer YAML til SKOS/Turtle og ModelDCAT-AP-NO -
Publisering:
make docs-publish— Regenererer mkdocs-portalactions/deploy-pages@v1— Publiserer til GitHub Pages
Eksempel på vellukka køyring:
✓ lint (ngr-virksomhet)
✓ mcp-linkml-valider-modell POLICY=bronze
✓ generate ngr
✓ publish
✓ Deploy to GitHub Pages
Eksempel på feila køyring:
✗ mcp-linkml-valider-modell POLICY=felles-begrepskatalog
Error: Missing required field: dct:publisher
validate.yml (nattleg validering og logging):
- Validering per domene (parallell):
- Validerer skjema mot
validation_policyfråbuild.yaml - Validerer eksempelfiler mot skjema
- Validerer datafiler mot publiseringspolicyer
-
Sjekkar at publiserte URI-ar ikkje er fjerna
-
Logglagring:
- Lagrar JSON-loggar til
src/linkml/<domain>/<modell>/validation/<version>/<policy>.json -
Filtrerer ut uendra loggar (ignorer
validated_at-felt) -
PR-oppretting (kun ved endringar):
- Opprettar PR med tittel:
chore(validation): oppdater valideringsloggar (N modellar) - PR inneheld kun loggar med faktiske endringar (nye violations eller forbettringar)
- Labels:
automated,validation
Eksempel på vellukka køyring:
✓ validate / ap-no
✓ validate / ngr
✓ Filtrer ut uendra loggar
- 12 identiske (fjerna)
- 3 endra (behelde)
- 1 nye (behelde)
✓ Lag PR med valideringsloggar (4 modellar)
Når vert validate.yml køyrt?
- Nattleg: kl 02:00 UTC (skriv loggar + opprett PR)
- Manuelt: workflow_dispatch (skriv loggar + opprett PR)
- PR-validering: ved pull_request mot skjema eller validator-kode (berre validering, ingen logging)
Kor lenge vert loggar lagra?
GitHub lagrar workflow-loggar i 90 dagar. Etter det vert dei automatisk sletta.
Korleis filtere loggar?
Filter på branch:
- Klikk på "Branch"-dropdown og vel main, feature/mi-branch, osv.
Filter på status: - "Success" (grøn): Alt gjekk bra - "Failure" (raud): Validering eller generering feila - "Cancelled" (grå): Køyringa vart avbroten manuelt
Filter på dato: - "Event" → "Push" / "Pull request" / "Schedule"
Søk på commit-melding:
- Bruk søkefeltet øvst: feat(ngr-adresse): legg til postnummer
Eksempel: Sjekke siste publisering
- Gå til https://github.com/brreg/linkml-datamodellering-no/actions/workflows/generate.yml
- Sjekk at øvste køyringa er grøn (✓)
- Klikk på køyringa for å sjå detaljert logg
- Sjekk "Deploy to GitHub Pages"-steget — vellukka dersom grøn hake
Verifisere publisering til GitHub Pages
Etter at generate.yml har køyrt vellukka, verifiser at artefaktane faktisk er publiserte til GitHub Pages.
Hovudportal
URL: https://brreg.github.io/linkml-datamodellering-no/
Kva som skal vere der: - MkDocs-dokumentasjonsportal - Navigasjonsmeny med domener (AP-NO, NGR, FINT, osv.) - Genererte skjema-sider med dokumentasjon og diagram
Genererte artefakter
Eksempel — SHACL shapes for ngr-virksomhet:
Eksempel — JSON Schema:
Eksempel — Begrepskatalog (SKOS/Turtle):
https://brreg.github.io/linkml-datamodellering-no/begrepskatalog/brreg-begrepskatalog/brreg-begrepskatalog.ttl
Verifisere at fila er oppdatert
Manuell sjekk:
curl -I https://brreg.github.io/linkml-datamodellering-no/ngr/ngr-virksomhet/ngr-virksomhet-schema.json
Sjekk Last-Modified-headeren:
Alternativ — sjekk i nettlesar:
1. Opne URL-en i nettlesar
2. Høgreklikk → "Inspiser" → "Network"-fanen
3. Refresh (F5)
4. Sjekk Last-Modified eller Date-headeren
Verifisere at høstingsendepunkt er tilgjengelege eksternt
Test at TTL-filer er tilgjengelege for Felles Begrepskatalog/Datakatalog:
curl -H "Accept: text/turtle" https://brreg.github.io/linkml-datamodellering-no/begrepskatalog/brreg-begrepskatalog/brreg-begrepskatalog.ttl
Dersom du får tilbake Turtle-data (startar med @prefix), fungerer høstingsendepunktet.
Framtidige monitoreringsalternativ
Desse alternativa kan leggjast til etter behov, men er ikkje nødvendige i PoC-fasen.
1. GoatCounter (besøksstatistikk)
Kva: Privacy-venleg, GDPR-compliant, open source web analytics
Kostnad: Gratis for open source-prosjekt
Implementering: ~30 minutt
Fordeler: - ✅ Ingen cookies — treng ikkje samtykke-banner - ✅ GDPR-compliant — perfekt for offentleg sektor - ✅ Open source - ✅ Viser: besøk per side, referrers, land, nettlesar
Korleis implementere:
- Registrer på https://www.goatcounter.com/
- Lag ein "site" (t.d.
brreg-linkml) - Legg til script-tag i MkDocs:
Opprett mkdocs/docs/overrides/main.html:
{% extends "base.html" %}
{% block analytics %}
<script data-goatcounter="https://brreg-linkml.goatcounter.com/count"
async src="//gc.zgo.at/count.js"></script>
{% endblock %}
Oppdater mkdocs/mkdocs.yml:
- Push til
mainog vent på at GitHub Pages oppdaterar seg
Dashboard: https://brreg-linkml.goatcounter.com/
2. UptimeRobot (uptime-monitorering)
Kva: Overvaker at GitHub Pages er oppe og tilgjengeleg
Kostnad: Gratis tier (50 monitors, 5-minutts intervall)
Fordeler: - ✅ E-postvarsel dersom sida går ned - ✅ Historikk over uptime (99.9%, osv.) - ✅ Gratis for grunnleggjande behov
Korleis implementere:
- Registrer på https://uptimerobot.com/
- Legg til ny monitor:
- Monitor Type: HTTP(s)
- Friendly Name: LinkML Datamodellering Portal
- URL:
https://brreg.github.io/linkml-datamodellering-no/ - Monitoring Interval: 5 minutt
- Legg til e-postadresse for varsel
Bruk: Automatisk varsel dersom GitHub Pages er nede
3. RSS-feed for releases
Kva: GitHub genererer automatisk RSS-feed for releases
URL:
Bruk: - Abonner i RSS-lesar (Feedly, Inoreader, osv.) - Få varsel når ny versjon vert publisert
Avgrensingar
Avgrensingane under er ei direkte følgje av at repoet praktiserer "Pull, ikkje push" (sjå Publiseringsoversikt for full forklaring av prinsippet): repoet har ingen API-tilgang eller credentials mot eksterne katalogar, og kan difor ikkje overvake kva som skjer etter at artefakter er publiserte til GitHub Pages.
Kva repoet IKKJE kan monitorere
- Om Felles Begrepskatalog/Datakatalog faktisk høstar data
- Høsting skjer eksternt (Digitaliseringsdirektoratet sitt ansvar)
- Repoet har ingen API-tilgang til data.norge.no
-
Må sjekkas manuelt på https://data.norge.no/concepts eller https://data.norge.no/models
-
Besøksstatistikk på data.norge.no
- Statistikk frå data.norge.no er ikkje tilgjengeleg for oss
-
Krev tilgang til Digitaliseringsdirektoratet sine analyseverkty
-
Feilloggar frå eksterne system
- Dersom Felles Begrepskatalog feiler under høsting, får vi ikkje varsel
- Må kontakte Digitaliseringsdirektoratet ved mistanke om problem
Kva du må gjere manuelt
Verifisere at data faktisk er synleg på data.norge.no:
- Begrepskatalogar:
- Gå til https://data.norge.no/concepts
- Søk på eit begrep frå din katalog (t.d. "foretaksnavn")
-
Verifiser at det visast med rett utgjevar og definisjon
-
Modellkatalogar:
- Gå til https://data.norge.no/models
- Søk på din modell (t.d. "Nasjonale grunndata - Virksomhet")
- Verifiser at den visast med rett metadata
Kontakt Digitaliseringsdirektoratet dersom: - Data er publisert til GitHub Pages (verifisert) - Men ikkje visast på data.norge.no etter 24-48 timar - E-post: dataopen@digdir.no
Sjå òg
- Publiser til Felles Begrepskatalog — rettleiing for begrepskatalogar
- Publiser til Felles Datakatalog — rettleiing for modellkatalogar
- Publiseringsoversikt — publiseringsflyt frå repo til eksterne katalogar
- GOVERNANCE.md — publiseringspolicy