This is a mono-repo for the microservices that together form the new letter ordering system.
For å kjøre løsningen lokalt må man ha docker og docker compose installert. Bygging av brevbakeren krever at du har konfigurert gradle med packages.read token for å hente pakker. Se seksjonen under for oppsett av read token i gradle.
Bruk følgende for å bygge og kjøre:
./gradlew :pensjon-brevbaker:build :pdf-bygger:build
Dersom du kun skal kjøre brevbaker og pdf-bygger og ikke skribenten må du fortsatt pga en bug i docker-compose generere tomme env files for skribenten:
(mkdir -p - skribenten-backend/secrets tjenestebuss-integrasjon/secrets skribenten-web/bff)
(touch skribenten-backend/secrets/azuread.env skribenten-backend/secrets/unleash.env tjenestebuss-integrasjon/secrets/docker.env skribenten-web/bff/.env)
docker-compose up -d --build
- For å hente alle secrets må du ha installert:
- kubectl
- python
- vault
- gcloud cli
- kjørende docker/colima
- naisdevice med standard dev-miljø tilganger og tjenestebuss-q2 gruppe-tilgang (optional - tilgangen trengs kun dersom du har behov for å kjøre hele backend i docker compose. Lokalt frontend kan kjøres mot q2)
- Legg til
155.55.2.73 tjenestebuss-q2.adeo.no
i /etc/hosts
- Legg til
- Hent alle secrets:
./fetch-secrets.sh
- Sett opp tokens for npm og gradle se oppsett av packages.read token
- Kjør følgende for å bygge alle applikasjonene og publisere docker images til lokalt registry:
(cd skribenten-web/bff && npm i && npm run build) (cd skribenten-web/frontend && npm i) (cd brevoppskrift-web/bff && npm i && npm run build) (cd brevoppskrift-web/frontend && npm i) ./gradlew build -x test
- Kjør alle backend-tjenester
docker-compose --profile skribenten up -d --build
- Kjør front-end. Applikasjonen krever at du logger på med en @trygdeetaten.no test bruker med saksbehandler tilganger.
npm run dev --prefix skribenten-web/frontend
- Åpne http://localhost:8083/vite-on for å koble front-enden opp mot bff(backend for front-end).
Ulike docker-tjenester har eksponerte porter som du kan koble en remote debugger på.
I docker-compose.yml finner du de ulike portene som mappes til remote debug for de ulike tjenestene. F.eks her hvor remote agent kjører i containeren på port 5008 og mappes ut til 5018 som du kan bruke til å koble til remote-debugger.
ports:
- "5018:5008"
environment:
- JAVA_TOOL_OPTIONS=-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=*:5008
Vi har ikke noe bra oppsett for dette, men her er en oppskrift på hvordan man kan løse det.
- Endre PEN_URL environment variable i docker-compose.yaml for skribenten-backend til
http://host.docker.internal/pen/api/
Om du får ConnectTimeoutException på kall til PEN fra skribenten, så betyr det mest sannsynlig at du har en brannmur som blokkerer. Følgende oppskrift er for linux.
- Kjør
docker network ls
og merk deg NETWORK ID for "pensjon-local" - Sjekk at du har et network interface med navnet
br-<NETWORK ID>
ved å kjøreip link show
- Legg til en (midlertidig) regel for å tillate tilkobling til host fra docker compose med
sudo iptables -I INPUT 1 -i br-<NETWORK ID> -j ACCEPT
For å hente enkelte avhengigheter under byggene må du lage ett github token med packages.read tilgang.
legg tokenet og gir brukernavn i gradle.properties filen $HOME/.gradle/gradle.properties
:
gpr.user=<github brukernavn>
gpr.token=<packages.read token>
For å hente npm pakker ved å legge inn brukernavn og samme token som passord med følgende kommando:
npm login --registry=https://npm.pkg.github.com --auth-type=legacy
Ytelsestesten er i utgangspunktet satt opp til å teste vedtaksbrevet UNG_UFOER_AUTO.
- Evt. rediger
locust/autobrev_request.json
om du ønsker å teste et annet brev. - Kjør
./locust/fetch-secrets.sh
- Start docker compose med locust profil
docker compose --profile locust up
- Gå inn på locust grensesnittet via http://localhost:8089/ og skriv inn url til endepunktet du ønsker å ytelses-teste. Se dokumentasjon fra locust for mer info om bruk.
Brevbakeren bruker pensjon-brevbaker-api-model for bestilling av brev. Api modellen eksporteres som artifakt og brukes av eksterne systemer for å fylle ut informasjon som kreves ved bestilling av brev.
Vi må kunne endre på obligatoriske felter i api modellen uten å ødelegge pågående brevbestillinger i produksjon. For å oppnå dette må man ha en overgangsperiode hvor brevbakeren er kompatibel med gammel og ny versjon av api modellen. Vi kan ikke bytte direkte over til ny versjon uten å gjøre avsender inkompatibel med mottaker(brevbaker), noe som vil kreve nedetid.
La oss si at vi skal erstatte ett felt annetBeloep med barnetillegg:
// før
data class PensjonsBrevDto(
val annetBeloep: Int,
)
// etter
data class PensjonsBrevDto(
val barnetillegg: Kroner,
)
En strategi for overgangen kan se slik ut:
- Påkrev begge versjoner av feltene samtidig og bruk denne modellen på avsender-siden.
Brevbakeren er satt opp til å ignorere ukjente felter(fail on unknown properties=false), så den vil fortsette å lese annetBeloep i dette tilfellet.
// overgangsperiode data class PensjonsBrevDto( val barnetillegg: Kroner, val annetBeloep: Int, )
- Ta i bruk de nye feltene i Brevbakeren. Nå vil brevbakeren ignorere det gamle feltet og bruke det nye:
// data class PensjonsBrevDto( val barnetillegg: Kroner, )
- Ta i bruk den nye versjonen i avsender systemet.
Dette repoet inneholder forekomster av kode generert av GitHub Copilot.
ERROR: Cannot connect to kubernetes cluster dev-gcp: getting credentials
Have you remembered to connect naisdevice? (see https://doc.nais.io/basics/access/)
- Hvis du har tidligere fulgt setupen, kan du prøve å verifiser at du er autensitert i gcloud, og potensielt oppdatere credentials ved å kjøre
gcloud auth login --update-adc
, så kan du prøve igjen
- Prøv
brew install jq