Introduktion

Formål

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.

Forudsætninger

Software requirements:

SoftwareVersion
Java8
DockerGerne nyeste
node10+

Det lokale udviklingsmiljø er opsat med docker-compose.

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`.

Trafik på localhost:8080 routes igennem en lokal reverse-proxy https://svn.nspop.dk/svn/components/nap/nap-compose/ som er på også docket netværket nap_net og eksponeret på  port 8080 på localhost.

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

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

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

Nap-ref-web

Udviklingsmiljø

Installer dependencies med `npm install` i rodfolderen.


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

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


For at starte en webpack dev server i docker køres  `docker-compose build && docker-compose up` fra compose/develop.  Developper setuppet volume mapper ./src folderen og konfigurationsfiler fra compose/configuration, 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 at køre `docker-compose up` når services skal startes.


Applikationen kan nu nåes  http://localhost:8080/nap/reference/web/, hvis nap-compose (https://svn.nspop.dk/svn/components/nap/nap-compose/) reverse proxy, står foran som nævnt ovenfor, og ellers på http://Localhost:4600.

compose/release konfigurationen bruges udelukkende i produktions øjemed.

 Konfiguration

configurations.json indeholder de konfigurerbare parametre af apllikatione

Key

Value

AppointmentsEndpointAftale endpoint
ServerUrlRelative path til nap-reference-facade

Konfigurationen bliver volume mappet af docker-compose og kan ændres runtime, men skal matche loadbalancer indstillingerne.

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 bliver resulterer nu i en indlæsning af ressourcer fra assets/.

Byg

For at bygge projektet kan køres `npm run build`. For at køre et produktionsbyg køres `npm run build:prod`.

CI

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 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 kommer i /coverage.

Linting

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

Dokumentation

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

Nap-ref-facade

Udviklingsmiljø

Installer dependencies med `mvn install` i rodfolderen.

Under compose folderen findes forskellige composefiler 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/develop. Denne kommando skal køres hver gang der ønskes et nyt deploy af kode ændringer.

Developper setuppet sørger for at kopier target/nap-ref-facade.war og konfigurationerne fra compose/configuration over i et image NSPS wildfly image.

Applikationen kan nu nåes internt i docker på netværket nap_net på http://napreffacade:8080 og på nap-ref-facade på http://localhost:8080/nap/reference/web/services/main 

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

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


Jenkins bygger og deployer i snapshot versioner af NSPs wildfly container. Dette byg kan testes ved at køre at `docker-compose up` i compose/test. 

Aplikationen kan nåes på samme url som ovenfor. 


compose/release konfigurationen bruges udelukkende i produktions øjemed.

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.


Ci

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.