Frontend-applikasjon for visning av stillinger på arbeidsplassen.nav.no.
Applikasjonen har ansvar for søk og filtrering av stillinger, lagring av favorittstillinger og lagring av søk slik at brukere kan få daglige oppdateringer pr. e-post.
Applikasjonen henter stillinger fra en dokumentdatabase (OpenSearch) gjennom pam-search-api. Lagrede søk og stillingsfavoritter, samt utsending av e-poster skjer gjennom applikasjonen pam-aduser. Navnet til innlogget bruker hentes fra pam-aduser.
Opprett fila .npmrc
i hjemkatalogen din. F.eks. ~/.npmrc
Mer info: https://docs.npmjs.com/cli/v9/configuring-npm/npmrc
Legg til følgende i fila
@navikt:registry=https://npm.pkg.github.com
//npm.pkg.github.com/:_authToken=$TOKEN
Opprett et token med "read:packages" rettigheter. https://github.com/settings/tokens Bytt ut $TOKEN med tokenet du akkurat opprettet. Velg Authorize token under "Configure SSO" for å gi tokenet tilgang til @navikt.
Caution
Ikke sjekk inn .npmrc
til GitHub.
Mer informasjon om autentisering: https://docs.github.com/en/packages/working-with-a-github-packages-registry/working-with-the-npm-registry#authenticating-with-a-personal-access-token
Tip
Gå igjennom login-flyten ved å trykke login. Bruk testbruker 04010100653
For å kjøre backend så trenger du å installere Docker, og for å få tilgang til images må du ha gcloud cli installert.
For å kjøre Docker Compose lokalt, trenger du repot med fellestjenester.
Hvis du ikke har det, klone det og legg i samma mappe som pam-stillingsok
:
git clone [email protected]:navikt/pam-docker-compose-shared.git ../pam-docker-compose-shared
Autentiser gcloud
gcloud auth login
Legg in Docker repo i credentials helper
gcloud auth configure-docker europe-north1-docker.pkg.dev
Hent token og logg in i Docker
gcloud auth print-access-token \
| docker login \
-u oauth2accesstoken \
--password-stdin https://europe-north1-docker.pkg.dev
Du kan nå starte Docker Compose for fellestjenestene og lokalt, med kommandoen som passer til det du trenger
$ npm run start:dependencies
.. eller ...
$ npm run start:dependencies-with-local-search
Tip
Får du feil når du kjører npm run start:dependencies
kan det hende du må oppdatere pam-aduser
imaget i docker-compose.yml
For å liste opp de siste 10 versjonene (docker tagsen)
gcloud container images list-tags europe-north1-docker.pkg.dev/nais-management-233d/teampam/pam-aduser --sort-by=~tags --filter="tags:* AND NOT tags:sha256*" --limit=10 --format="value(tags)" | cut -d "," -f2
Skriptet sørger for å starte felles tjenester og lage databaser som trengs.
$ npm install
$ npm run dev
Du kan deretter velge å kjøre applikasjonen med teststillinger fra dev- eller prod-miljøet, eller kjøre en lokal instans av opensearch. Sistnevnte krever at du registrerer stillinger i stillingsregistrering lokalt, og er nødvendig for å enkelt kunne teste superrask søknad lokalt.
Gå til instruksjonene som passer det du vil starte opp.
Når applikasjonen er oppe, så kan du gå inn på http://localhost:3000/stillinger
For å starte docker-containere for redis, mock-oauth2-server og wonderwall.
$ npm run start:dependencies
For å få inn stillinger kan du koble deg direkte til et kjørende instans av pam-search-api
i Kubernetes.
- Koble til naisedevice.
- Kjør port-forwarding. Dette gjør du med følgende kommando:
Dev:
$ kubectl -n teampam port-forward deployment/pam-search-api 9000:9000 --context dev-gcp
Prod:
$ kubectl -n teampam port-forward deployment/pam-search-api 9000:9000 --context prod-gcp
Tip
Dersom du får får feilmelding ved kjøring av kommandoene over kan du prøve å logge inn i gcloud med følgende kommando.
gcloud auth login
Om du får følgende output betyr det at port-forwarden funket og pam-search-api
er tilgjengelig på port 9000:
Forwarding from 127.0.0.1:9000 -> 9000
Forwarding from [::1]:9000 -> 9000
Bruk dette oppsettet hvis du ønsker å registrere stillinger lokalt og/eller teste superrask søknad lokalt.
Dette krever at du også kjører upp pam-stillingsregistrering
lokalt, med tilhørende Docker-tjenester som følger med lokalt søk.
For å starte alle containrer, kjør
$ npm run start:dependencies-with-local-search
Lyst til å teste i dev-miljøet? feature/**
branches pushes automatisk til dev eller så kan man alternativt legge til deploy:dev
i commit meldingen for å trigge deployment til dev. Dette vil hoppe over opprettelsen av draft release, se deploy-dev.yml fila eller pam-deploy for mer.
For å kunne bruke innloggede tjenester (dvs. favoritter og lagrede søk), må du først kjøre pam-aduser
.
Tip
Tjenesten pam-aduser
startes automatisk av npm run start:dependencies
Stillingsøket kjører i Next.js rammeverket. Den viser stillinger, favoritter og lagrede søk. Brukere kan søke etter stillinger uten å logge inn, mens favoritter og lagrede søk krever innlogging.
Server-side står for en del logikk, blant annet konvertering av søkekriterier i frontend til ElasticSearch for å kunne utføre spørringer mot pam-search-api.
Bildet viser en forenklet skisse av pam-stillingsok
og nærmeste integrasjoner.
navikt/pam-search-api har en dokumentdatabase med stillinger
(ElasticSearch) som pam-stillingsok
henter stillinger fra via REST.
En index-tjeneste henter stillinger fra stillingsdatabasen og indekserer dem til ElasticSearch via
REST.
navikt/pam-aduser har funksjonalitet for lagring av
favorittstillinger, lagrede søk og utsending av epost med lagrede søk. Appen har et REST API som pam-stillingsok
bruker for å
hente og editere favoritter og lagrede søk.
Favorittstillinger lagres i en Postgres-database i pam-aduser
. Favorittene synces mot
stillingsdatabasen med masterdata for stillinger via REST for å fange opp endringer i stillingannonsers status, tittel
osv.
Lagrede søk fungerer ved at pam-stillingsok
genererer en predefinert spørring som kan eksekveres mot pam-search-api
.
Denne spørringen lagres i pam-aduser
. Hver natt kjøres alle lagrede spørringer mot pam-stillingsok
. Nye
stillinger sendes til brukere over epost med Microsoft Graph API.