Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Navitabs
rootReferenceimplementering (NAP) - Leverancebeskrivelse
includeroottrue

To forskellige former. Er det folk der skal bruge produktet eller integrere op mod en service

      1. SDK guide til de folk der skal anvende sdket
        1. fx hvordan finder man dokumentation
        2. Det kan være godt at skrive i kode nær dokumentation.
        3. evt. linke til arkitektur beskrivelse, så man kan forstå, hvordan tingene hænger sammen.
      2. End web projekter - de folk der skal bruge produktet. Altså bruge websitet



Table of Contents

Introduktion

...

Formålet med dette dokument er at beskrive, hvordan et udviklingsmiljø, til videreudvikling af NAP ref-implementation, skal sættes op, samt hvordan koden deployes og testes.

Sammenhæng med øvrige dokumenter

Dette dokument er en del af den samlede dokumentation for NAP Ref.impl.

Dokumentet er udformet, så det i videst muligt omfang opfylder sit formål uafhængigt af de øvrige dokumenter.

Ønskes mere information omkring arkitektur og design findes dette på NAP Ref.Impl. - Design og Arkitektur beskrivelse.

Hvis der er behov for yderligere dokumentation omkring hele NAP platformen, henvises til NAP Platform - Guide til anvendere

Forudsætninger

Software requirements:

SoftwareVersion
Java8
Docker Engine18.02.0+
node10+

Det lokale udviklingsmiljø er opsat med docker-compose.

nap-reference-web og nap-reference-facade ligger som repositories på svn.nspop.dkDisse skal hentes for anvende de foreslåede compose-setup.

Derudover For at kunne køre de compose filer, der bliver beskrevet nedenfor kræves et docker netværk kaldet nap_net. Hvis dette ikke allerede er lavet kør `docker network create nap_net`.

Der udstilles ingen porte på docker-hosten, og alt trafik routes således Trafik på localhost:8080 skal routes igennem en lokal reverse-proxy https://svn.nspop.dk/svn/components/nap/nap-compose/ på localhost:8080, som skal køres parallelt på samme netværk.

...

, som også er på docket netværket nap_net og eksponeret på port 8080 på localhost.

Således bliver nap-ref-facade tilgængelig på http://localhost:8080/reference/ og nap-refence-web på  http://localhost:4400/.

Det meste funktionalitet af Nap-Ref-web kræver, at den er framet i en værtsapplikation.

For at gøre dette, skal opsætning for nap-java-host, nap-lobby-web, nap-admin køres parallelt (NAP Platform - Guide til anvendere).

Nap-reference-web

Funktionalitet

Nap-ref-web skal illustrere brugen af nap-typescript-sdk og nap-angular-sdk, anvendelse af samtlige versioner af eventkataloget, og demonstrere et projekt, der lever op til NSP husregler for webløsninger. 

Udviklingsmiljø

Installer dependencies med `npm i` install` i rodfolderen.

Under compose /- folderen findes forskellige en compose -filer fil til udvikling, test og release.

Vær opmærksom på, at kun at køre en service ved navn naprefweb ved køre `docker-compose down`.

For at opsætte starte en webpack dev server i docker køres  køres `docker-compose build && docker-compose up` fra compose/developdevelopment.  

Developper setuppet volume mapper ./src folderen, hvilket betyder, at ændringer i kildekoden bliver compilet og deployet med det samme. 

Hvis dependencies ændres skal containeren bygges igen, ellers er det fremover nok bare at køre `docker-compose up` når services skal startes.

Servicen benytter sig af nap-angular-sdk og nap-typescript-sdk og er udviklet til at være indlejret i et værtssytem (eksempelvis nap-java-host), hvor den får alt sin kontekst.
Det meste funktionalitet er bundet op på denne kontekst.

 Konfiguration

Nap-reference-web benytter sig af Angular's environmental variable til at loade en af følgende konfigurations filer fra configurations.service.ts:

  • configurations.json
  • configurations-dev.

...

  • json

Disse konfigurationsfiler indeholder urler til facaden, og er samtidig de konfigurerbare parametre af applikationen

Key

Value

appointmentsEndpointnap-reference-facades aftale endpoint
serverUrlRoden til nap-reference-facade
logOutEndpointnap-reference-facades oiosaml logout endpoint


Serverless opsætning

Det kan være en fordel at køre uden om nap-ref-facade, da den har en afhængighed til dokumentdelingsservicen på test1. 

For at køre serverless skal `--configuration=mock` tilføjes startkommandoen i compose filen i  compose/development/.

Alle kald resulterer nu i en indlæsning af ressourcer fra assets/.

Debug

Hvis nap-reference-web køres i serverless mode, kan den med fordel åbnes i chrome/firefox og debugges som vanligvis derfra.

Hvis den åbnes i nap-java-host, er den eneste debugging mulighed. consol.logs(). Disse statements printes til konsole vinduet af hosten, som kan toggles i toppen.

Byg

For at bygge projektet  køres `npm run build`.

For at køre et produktionsbyg køres `npm run build-prod`.

CI

Projektet gøres klar til release ved

Jenkinsfilen beskriver en pipeline med install, test og build, der køres i NSPs node-chrome image, for at kunne afvikle test i en headless chromium browser.

Jenkins bygger og deployer i snapshot versioner af NSPs wildfly container. Dette byg kan testes ved at køre

Compose-up setup volume mapper ./src folderen og ændringer i kildekoden vil blive compilet med det samme.

Applikationen kan nu nåes internt i docker på netværket nap_net på http://naprefweb:8080 (såfremt yderlige porte ikke eksponeres) og på http://localhost:8080/nap/reference/web/.

Jenkins bygget kan testes ved at køre at `docker-compose up` i compose/test. 

Test og Coverage

For at køre unit-tests med Karma kør `npm run test`. Det kører alle unit tests i en headless chromium browser.

Istanbul generer en coverage rapport placeret i /coverage.

Eventuelle fejl printes til STOUT.

Linting

Der kan køres linting med eslint med `npm run lint`.

Eventuelle fejl printes til STOUT.

Dokumentation

Der kan generes dokumentation tsdoc med kommandon `npm run doc`

Nap-reference-facade

Udviklingsmiljø

Installer dependencies med `mvn install` i rodfolderen.

Under compose folderen findes forskellige compose filer til udvikling, test og release.

Vær opmærksom på kun at køre en service ved navn napreffacade.  Stop derfor altid servicen og kør `docker-compose down`, når der skal skiftes setup eller deployes nye kodeændringer.

For at starte en wildfly server til udvikling køres `docker-compose build --no-cache && docker-compose up´ fra compose/development. Denne kommando skal køres hver gang der ønskes et nyt deploy med kode ændringer.

Developper setuppet sørger for at kopier target/nap-ref-facade.war og konfigurationerne fra compose/configuration over i NSP's wildfly image. Mere information om konfigurering kan læses på NAP Ref.Impl. - Driftsvejledning.

Applikationen kan Applikationen kan nu nåes internt i docker på netværket nap_net på http://naprefwebnapreffacade:8080 (såfremt yderlige porte ikke eksponeres) og på og på nap-ref-facade på http://localhost:8080/nap/reference/web/.

compose/release bruges til release

CI

Test

For at køre unit-tests med Karma kør `npm run test`. Istanbul generer en coverage rapport kommer i /coverage.

 hvis nap-compose reverse proxy, står foran som nævnt ovenfor.

Debugging

i compose/development sættes en debug port samt oiosaml.home. 

Der kan attaches en Jvm debugger på localhost:8788 med `-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8788`

Byg

For at bygge projektet kan køres `mvn compile`.

Test og Coverage

JUnit anvendes til implementering af unit tests.

Der er kontinuert gennemført unit tests på alle komponenter i projektet.

Unit tests kan afvikles ved at køre: `mvn test` og Coverage rapport generes med maven-surefire og publiceres med jacoco.

integration tests kan afvikles ved at køre : `mvn test P-integrationstest"

Eventuelle fejl printes til STOUT.

Dokumentation

Kodedokumentation følger gængs standard for JAVA dokumentation.

Ci

Nap-reference-facade gøres klar til release med mvn release:prepare

Jenkinsfilen beskriver en pipeline med install og tests, der køres i NSPs java image.

Jenkins bygger og deployer i snapshot versioner af NSPs wildfly container.

...