Versions Compared

Key

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

...

Efter selve bygget af skal pipelinefilen indeholde et byg af et eller flere dockerimages, som er leverandørens opskrift på hvordan deres komponent skal deployes. NSP stiller et base/platforms image til rådighed, hvor de afhængigheder, sikkerhedskomponenter og NSP-deployment-tekniske afhængigheder er på plads. Dette image skal bruges som udgangspunkt for det image leverandøren bygger. Resultatet af dette skal være et docker-image, som indeholder den byggede komponent og det statiske konfiguration, der måtte skulle til - konfiguration der forventes ændringer til baseret på miljø osv. håndteres særskilt. Leverandørerne får således et godt indblik i hvordan netop deres komponent kommer til at blive driftet, idet det er nøjagtig samme docker image, der bliver afviklet af QA og driften. Gældende husregler for konfiguration og afhængigheder skal naturligvis stadig overholdes.

Dockerimages der skal driftes på platformen skal derfor altid tage udgangspunkt i

registry.nspop.dk/platform/nsp:<version>

Den nuværende version er 1 - de forskellige tags er for nuværende ikke 100% immutable, da mindre opdateringer, der for komponenterne er irrelevante kan medføre nye udgaver af versionen. Ved større ændringer, hvor det forventes at kunne have indflydelse, skifter versionsnummeret.

Optionals...

Yderligere er der så mulighed for at opsætte automatisk generering af code-coverage rapporter, testrapporter osv. Det kan også lade sig gøre at notificere via slack, hvis byggejobbet går skævt og leverandøren skal underettes.

...

For hver komponent skal der ligeledes være en compose folder under roden af repository'et. Folderen skal indeholde en docker-compose fil, der udtaler sig om hvordan komponenten startes i testsammenhæng og een der udtaler sig om hvordan komponenten startes, når denne skal deployes i NSP miljøerne. Yderligere kan man som leverandør have stor fordel af at lave en development compose-fil, som kan anvendes i udviklingsammenhæng (med mulighed for at mappe stier til deployment af war-filer og specificere hvor dockerfiler findes til build øjemed). 

Eksempler

NCC

Der er til formålet konstrueret eksempelkode under NCC (NSP Containerized Component) - dette findes her: https://svn.nspop.dk/svn/components/ncc/ 

I NCC koden findes eksempler på hvordan koderepository'et bør struktureres, indhold af jenkins-byggefilen, samt en dockerfil. Yderligere bliver denne også releaset og deployet til test1 og indeholder derfor eksempler på funktionelle test-docker-compose-filer.

Repository indhold

Indhold i kode repository'et:

Code Block
main-src-folder
|
+-compose
| |
| +-test
| | |
| | +-docker-compose.yml
| |
| +-release
| | |
| | +-docker-compose.yml
| | 
| +-devel (optional)
| | |
| | +-docker-compose.yml
| |
| +-application.properties
| |
| +-datasource-ds.xml
| |
| +-log4j.xml
| |
| +-other_configuration_files
|
+-Dockerfile (alternativt under modulerne)
|
+-Jenkinsfile
|
+-source_folders_and_files


Jenkinsfile

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

Code Block
languagegroovy
titleJenkinsfile
#!groovy

node {
  try {
    stage('Checkout') {
      checkout scm
    }

    stage('Build') { 
      //This will resolve to docker.image('registry.nspop.dk/platform/nspbuilder:jdk8').inside(){
      docker.image("${NSPBUILDER}").inside(){
        sh "mvn clean install"
      }
    }

    stage ('Archive') {
      //This will resolve to docker.build('registry.nspop.dk/components/ncc:build', '--pull .')
      docker.build("${REGISTRYTAG}", '--pull .')
    }

  } catch (err) {
    //slackSend channel: '<channelname>', color: 'bad', message: "${env.JOB_NAME} ${env.BUILD_NUMBER} - Build failed ... (<${env.BUILD_URL}|Open>)", tokenCredentialId: 'Slack-Token'
  } finally {
    stage ('Clean') {
      deleteDir()
    }
  }
}

Dockerfile

Eksempel på dockerfil:

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/