Vadim Surkov 5 роки тому
батько
коміт
dd54020d1d
2 змінених файлів з 86 додано та 2 видалено
  1. 85 0
      Jenkinsfile
  2. 1 2
      svn-checkout.sh

+ 85 - 0
Jenkinsfile

@@ -0,0 +1,85 @@
+pipeline {
+  agent {
+    label "swarm"
+  }
+  options {
+        disableConcurrentBuilds()
+        timeout(time: 20, unit: 'MINUTES')
+  }
+  environment {
+    DOCKER_IMAGE='lab/analis-wineservice'
+    DOCKER_REGISTRY='registry.infoclinica.ru:5000'
+    SWARM_GIT_URL='ssh://git@git.sdsys.ru:8022/labportal/stack-deploy.git'
+    SWARM_GIT_NAME='stack-deploy'
+    JENKINS_MAIL='jenkins@sdsys.ru'
+    DHOST='tcp://dev-iru-swarm.infoclinica.lan:2376 DOCKER_TLS_VERIFY=1'
+    NEWTAG=''
+    REV_NUMBER=''
+  }
+  parameters {
+    string(
+      name: "mailto",
+      defaultValue: "admin@sdsys.ru",
+      description: "Email which has to be notified."
+    )
+  }
+  stages {
+    stage("SVN Checkout") {
+      steps {
+        sh "./svn-checkout.sh"
+      }
+    }
+    stage("Build") {
+      steps {
+        script {
+          // Discover revision number
+          REV_NUMBER=sh(returnStdout: true, script: 'docker run -it --rm -v $(pwd):/repository registry.sdsys.ru/alpine-svn:0.3 info --show-item last-changed-revision analis').trim
+          echo "Last-Changed-Revision number is '$REV_NUMBER'"
+        }
+        sh "docker build -t ${DOCKER_REGISTRY}/${DOCKER_IMAGE}:${REV_NUMBER}-${BUILD_NUMBER} ."
+        sh "docker tag ${DOCKER_REGISTRY}/${DOCKER_IMAGE}:${REV_NUMBER}-${BUILD_NUMBER} ${DOCKER_REGISTRY}/${DOCKER_IMAGE}:latest"
+      }
+    }
+    stage("Publish") {
+      steps {
+        sh "docker push ${DOCKER_REGISTRY}/${DOCKER_IMAGE}:${REV_NUMBER}-${BUILD_NUMBER}"
+        sh "docker push ${DOCKER_REGISTRY}/${DOCKER_IMAGE}:latest"
+      }
+    }
+    stage("Tagging"){
+      steps{
+        withCredentials([sshUserPrivateKey(credentialsId: 'provision', keyFileVariable: 'GIT_SSH_KEY', passphraseVariable: '', usernameVariable: 'GIT_SSH_USERNAME')]) {
+          sh """GIT_SSH_COMMAND='ssh -i ${GIT_SSH_KEY} -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no' \
+                git clone ${SWARM_GIT_URL}
+                pushd ${SWARM_GIT_NAME}
+                echo -n ${REV_NUMBER}-${BUILD_NUMBER} > tags/${DOCKER_IMAGE}.build-version
+                git add -A
+                git config --global user.email "${JENKINS_MAIL}"
+                git config --global user.name "Jenkins"
+                git commit -m "Version update tags/lab/${DOCKER_IMAGE}.build-version = ${REV_NUMBER}-${BUILD_NUMBER}"
+                GIT_SSH_COMMAND='ssh -i ${GIT_SSH_KEY} -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no' \
+                git push origin master
+                popd
+                rm -rf ${SWARM_GIT_NAME}
+                ls"""
+        }
+      }
+    }
+  }
+  post {
+    failure {
+      mail charset: 'UTF-8',
+           subject: "Jenkins build ERROR",
+           mimeType: 'text/html',
+           to: "${mailto}",
+           body: "<b>ATTENTION!!!</b> Jenkins job <b>FAILED.</b>\n\n Project Name: ${env.JOB_NAME}\n Build TAG: <b>${REV_NUMBER}-${BUILD_NUMBER}</b>\n Build URL: ${RUN_DISPLAY_URL}"
+    }
+    success {
+      mail charset: 'UTF-8',
+           subject: "Jenkins build SUSCCESS",
+           mimeType: 'text/html',
+           to: "${mailto}",
+           body: "<b>Congradulations!!!</b> Jenkins job successfully finished\n\n Project Name: ${env.JOB_NAME}\n Build TAG: <b>${REV_NUMBER}-${BUILD_NUMBER}</b>\n Build URL: ${RUN_DISPLAY_URL}"
+    }
+  }
+}

+ 1 - 2
build.sh → svn-checkout.sh

@@ -1,3 +1,2 @@
-docker run -it --rm -v $(pwd):/repository registry.sdsys.ru/alpine-svn:0.3 cleanup analis
+docker run -it --rm -v $(pwd):/repository registry.sdsys.ru/alpine-svn:0.3 cleanup analis; cat -
 docker run -it --rm -v $(pwd):/repository registry.sdsys.ru/alpine-svn:0.3 co --force --no-auth-cache svn://192.168.21.250/programs/trunk/Services/Analis/Win32 analis --username public --password "sds#7753435"
-docker build -t analis-wineservice .