Skip to content

Latest commit

 

History

History
135 lines (112 loc) · 4.68 KB

Deploy.md

File metadata and controls

135 lines (112 loc) · 4.68 KB

Pakketering og deployment

Kodebasen består af 2 selvstændige kode-projekter, som er beskrevet uafhængigt af hinanden nedenfor.

AD Organisationsimporter

Der ligger en InnoSetup fil i Installer folderen i dette kode-projekt. Den kan anvendes af InnoSetup til at bygge en installations EXE fil, indeholder alle de relevante filer. Den sørger samtidig for at installere komponenten som en Windows Service når man kører EXE filen.

Man kan også anvende andre værktøjer til at danne en EXE/MSI installer, men der er kun udarbejdet scripts til InnoSetup. Man kan tage et kig i InnoSetup iss filen for at se hvilke filer der skal kopieres ind under installationen, og hvad der skal afvikles i Post-Install (installation af Windows Service). Scriptet er simpelt og nemt at overskue.

Bemærk! man skal formodentligt tilpasse iss filen, så stier m.m. passer til der hvor man har kildekoden placeret på den maskine hvor man bygger EXE installeren.

OS2autoproces Backend

OS2autoproces er en Java applikation, der er afhænging af konfigurationsfiler samt certifikat/keystore filer i forbindelse med deployment. Byggeprocessen for OS2autoproces sikrer at applikationen og dens framework afhængigheder pakkteres i en fed JAR fil, så til deployment har man alene brug for

  • Den fede JAR file
  • En konfigurationsfil
  • En keystore fil

Man kan udelade konfigurationsfilen hvis man blot tilføjer alle konfigurationsparametre som miljøvariable i et Docker deployment. Dette kan gøres som beskrevet nedenfor

Docker

Man kan bygge og pakktere OS2autoproces i en Docker container på følgende måde

  1. Kompiler OS2autoproces til en fed JAR fil
  2. Kopier den fede JAR fil ind i en folder ved navn "deploy"
  3. Lav en tekst fil ved navn "run.sh" og kopier den ind i "deploy" folderen
  4. Byg en Docker container med indholdet af "deploy" folderen
  5. Start Docker containeren vha Docker Compose, Kubernetes eller andet Docker deployment værktøj

1 - Kompiler OS2autoproces

JAR filen kan kompileres vha Maven og en terminal vindue som vist nedenfor

$ mvn clean install

2 - Kopier fed JAR til "deploy"

Start med at lave en deploy folder, og kopier så JAR filen derind som vist nedenfor

$ mkdir Deploy
$ cp target/os2autoproces-backend-1.0.0.jar deploy/

3 - Lav run.sh script fil

Vi har brug for et shell script der kan starte OS2autoproces. Lav en tekst-fil ved navn run.sh og kopier den ind i "deploy" folderen. Filen skal have følgende indhold

#!/bin/bash

java -Dloader.path=config/* -jar os2autoproces-backend-1.0.0.jar

4 - Byg Docker container

Når både JAR og run.sh fil ligger i "deploy" folderen, kan man bygge en container vha en Dockerfile. Lav en fil ved navn Dockerfile, og giv den følgende indhold

FROM openjdk:8-jre

WORKDIR /home COPY /deploy /home RUN chmod +x /home/run.sh EXPOSE 9090

ENTRYPOINT ["/bin/bash", "run.sh"]

Man bygger efterfølgende containeren via følgende kommandolinje. Dette forudsætter at man har Docker installeret.

docker build -t os2autoproces:latest .

5 - Start Docker container

Docker containeren kan nu startes i produktionsmiljøet (hvordan man får containeren til produktionsmiljøet er udenfor scope af denne vejledning, men Dockerhub kunne være en mekanisme til dette). Til dette formål kan man bruge forskellige Docker værktøjer. Et sådan værktøj er Docker Compose, og der er nedenfor vist en simpel docker-compose.yml fil, som indeholder de fornødne opsætninger til at starte containeren. Bemærk at "environment" sektionen indeholder alt konfigurationen, og at der mountes en "config" folder, som skal indeholder certifikatet der refereres til i SAML opsætningen.

version: "2.4"
services:
  backend:
    image: os2autoproces:latest
    ports:
      - 9090:9090
    environment:
      dataSource.url: "jdbc:mysql://localhost:3306/ap?useSSL=false"
      dataSource.username: "root"
      dataSource.password: "Test1234"

      scheduled.enabled: "true"

      ... osv ...
    volumes:
      - ./config:/home/config

Der bør laves en "config" folder, hvor man kan kopiere keystore filen ind, så den kan læses af Docker containeren. Man kan også vælge at have hele environment sektionen i en application.propeties fil, som så placeres i "config" folderen.

Man kan evt starte med en kopi af indholdet af application.properties filen fra kodebasen, og så tilpasse efter behov.