Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Denne side beskriver hvordan man som leverandør til NSP anvender de værktøjer SDS stiller til rådighed i CI/CD sammenhæng. Der er både nogle best practices, samt nogle forventninger til de enkelte leverancer der skal være opfyldt, for at både leverandør, QA, drift og anvendere kan få mest mulig glæde af leverancerne.

...

Afsnittet her beskriver de skridt der foretages helt fra idé til idriftsættelse for NSP leverancer fremover. 

Ændringer til NSP-platformen opstår og håndteres af SDS i Jira på jira.nspop.dk. Man kan således forvente som leverandør at der er nogle givne sager man skal foretage en leverance af - issue-tracking og kommunikation med SDS/QA/Operatør foregår NSP foregår på de enkelte issues i jira. Når en sag er klar til udvikling findes der en versions på det issue ændringen knytter sig til.

Kildekoden oprettes/ændres i svn.nspop.dk/svn/components/<komponent-navn> (herunder ligger trunk, tags og branches). 

Når udviklingen mener at have implementeret kodeændringerne laves et release og der oprettes et tag i svn, med den version der findes i på de pågældende sager i Jira. Herefter bygger QA NSP funktionen tagget og leverer dette videre til driften. Bygget foregår på NSP CI-miljøet, der pt. findes på jenkins.nspop.dk. De enkelte leverandører har selv adgang til en række jobs herunder og forventes at kunne se/afvikle disse imod trunk af deres svn repositories.

For hver komponent knytter sig et antal jobs i CI-miljøet. Nogle af disse kan afvikles af leverandøren, nogle kan afvikles af QA funktionen og driftenNSP. Produktet af disse byggejobs er et/flere docker images, som deponeres på NSP docker registry'et. Dette findes på registry.nspop.dk. 

...

De værktøjer der anvendes af toolchain'en er således, Jenkins, VMware Harbor, Docker, Maven og svn. Slack anvendes til div. notifikationer fra CI-miljøet, SDS, QA og driften, så her kan man også forvente både spørgsmål, svar og notifikationer fra miljøet.

...

Til de komponenter der findes på svn.nspop.dk/svn/components er der nogle forventninger til indholdet af. Disse findes for at have en ensretning på kodebasen og yderligere ensretning af leverancerne til driften. Derudover er det også et værktøj til udviklerne selv, da det giver mulighed for hurtigere feedback på deres kodeændringer. Adgang til kode repository'et kan gives af enten driften eller QA funktionen, men skal der oprettes , oprettelse af helt nye brugere i LDAP til brug for CI-miljøet, Jira, svn etc . så skal drift/operatør kontaktes.gives af NSP.

Jenkins pipeline fil

I roden af kodebasen skal der findes en groovy-fil kaldet Jenkinsfile. Denne indeholder opskriften på at bygge komponenten i NSP CI-miljøet. Denne fil er leverandørens "indgang" til byggejobbet. QA-funktionen og driften sørger NSP sørger for at opsætte jobs, der anvender denne fil til byg og sikrer at de nødvendige afviklingsrettigheder er tilstede for leverandøren. I udgangspunktet bliver disse jobs sat op til at bygge komponenten så snart der detekteres kodeændringer under /trunk. 

...

Indhold i kode repository'et:

...

Image Added

Jenkinsfile

Indholdet af jenkinsfilen kan der ses et eksempel på her:

...

Code Block
titleDockerfile
FROM registry.nspop.dk/platform/nsp:1

# Copy configuration files to the module directory
RUN mkdir -p /pack/wildfly8/modules/dk/sds/nsp/examples/ncc/main/
COPY etc/module.xml /pack/wildfly8/modules/dk/sds/nsp/examples/ncc/main/

# Copy the war file to the deployment directory
COPY target/ncc.war /pack/wildfly8/standalone/deployments/


compose-filer

Eksempel på test compose-fil

Code Block
languageyml
version: "3.6"

networks:
  nsp_net:
    external: true
  ncc_net:
    external: false

services:
  cradb:
    image: registry.nspop.dk/playground/cradb:latest
    networks:
      - ncc_net
    environment:
      - MYSQL_RANDOM_ROOT_PASSWORD=yes
  nccdb:
    image: mariadb:latest
    networks:
      - ncc_net
    environment:
      - MYSQL_RANDOM_ROOT_PASSWORD=yes
    volumes:
      - ../database/01_create_db.sql:/docker-entrypoint-initdb.d/01_create_db.sql
  ncc:
    image: registry.nspop.dk/components/ncc:1.0.10
    ports:
      - "8080"
    depends_on:
      - cradb
      - nccdb
    networks:
      - nsp_net
      - ncc_net
    environment:
      - LOG_MAX_FILE_SIZE=10MB
      - LOG_MAX_BACKUP_INDEX=5
    volumes:
      - ../configuration/ncc.properties:/pack/wildfly8/modules/dk/sds/nsp/examples/ncc/main/ncc.properties
      - ../configuration/log4j-ncc.xml:/pack/wildfly8/modules/dk/sds/nsp/examples/ncc/main/log4j-ncc.xml
      - ../configuration/ncc-ds.xml:/pack/wildfly8/standalone/deployments/ncc-ds.xml

Eksempel på release compose fil:

Code Block
languageyml
version: "3.6"

services:
  ncc:
    image: registry.nspop.dk/components/ncc:1.0.10
    volumes:
      - ../configuration/ncc.properties:/pack/wildfly8/modules/dk/sds/nsp/examples/ncc/main/ncc.properties
      - ../configuration/log4j-ncc.xml:/pack/wildfly8/modules/dk/sds/nsp/examples/ncc/main/log4j-ncc.xml
      - ../configuration/ncc-ds.xml:/pack/wildfly8/standalone/deployments/ncc-ds.xml