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ærtsapplikation.

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

Funktionalitet

Nap-ref-web skal illustrere brugen af nap-typescript-sdk og nap-angular-sdk og demonstrer et projekt der lever op til NSP husregler for webløsninger

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.


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

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