Page History
...
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 | ||||
---|---|---|---|---|
| ||||
#!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 | ||
---|---|---|
| ||
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/ |