Tomishinets Vladimir пре 4 година
родитељ
комит
f31c95f89f
1 измењених фајлова са 96 додато и 0 уклоњено
  1. 96 0
      prodK8s.Jenkinsfile

+ 96 - 0
prodK8s.Jenkinsfile

@@ -0,0 +1,96 @@
+@Library('jenkins-library@master') _
+def Label = "admin-lab-build-${UUID.randomUUID().toString()}"
+pipeline {
+  options {
+    buildDiscarder logRotator(numToKeepStr: '10')
+    disableConcurrentBuilds()
+  }
+  agent {
+    kubernetes {
+      label Label
+      yaml libraryResource('adminPodDefinition.yaml')
+    }
+  }
+  environment {
+    CLOUD='cloud-it-k8s'
+    DOCKER_IMAGE='lab/admin'
+    CHART_SUBPATH='helm/lab'
+    NAMESPACE='lab'
+    HELM_GIT_URL='ssh://git@git.sdsys.ru:8022/labportal/k8s.git'
+    APP_GIT_URL='ssh://git@git.sdsys.ru:8022/labportal/admin.git'
+    JENKINS_MAIL='jenkins.dev@sdsys.ru'
+    DOCKER_REGISTRY='jcr.infoclinica.ru'
+    CHART_NAME=''
+    CHART_PATH=''
+    PROJECT=''
+    HELM_DIR=''
+    TAG=''
+  }
+  parameters {
+    string(
+      name: "mailto",
+      defaultValue: "admin@sdsys.ru",
+      description: "Email which has to be notified."
+    )
+  }
+  stages {
+    stage("Prepare to Update") {
+      steps {
+        script {
+          echo "Pull Repo"
+          gitOps.clone(HELM_GIT_URL)
+          HELM_DIR = dirOps.calculateDir(HELM_GIT_URL)
+          CHART_PATH = "${HELM_DIR}/${CHART_SUBPATH}"
+          PROJECT = DOCKER_IMAGE.split("/")[1]
+        }
+      }
+    }
+    stage("Update Helm Chart values.yaml") {
+      steps {
+        script {
+          echo "Update values.yaml"
+          def data = readYaml file: "${CHART_PATH}/values.yaml"
+          TAG_PATH = "images.${PROJECT}.dev"
+          TAG = yamlOps.getBuilder(TAG_PATH, data)
+          TAG_PATH = "images.${PROJECT}.prod"
+          yamlOps.updateBuilder(TAG_PATH, data, TAG)
+          writeYaml file: "${CHART_PATH}/values.yaml", data: data, overwrite: true
+        }
+      }
+    }
+    stage("Update APP") {
+      steps {
+        script {
+          RELEASENAME = CHART_SUBPATH.split("/")[1]
+          try {
+            echo "Update APP"
+            k8sHelmOps.upgrade(CLOUD, NAMESPACE, RELEASENAME, CHART_PATH, 'dev')
+          }
+          catch(err) {
+            echo "Recovering APP"
+            k8sHelmOps.rollback(CLOUD, NAMESPACE, RELEASENAME)
+            throw err
+          }
+        }
+      }
+    }
+    stage("Push changes to REPO") {
+      steps {
+        script {
+          echo "Push changes to Repo"
+          COMMIT = "Version update ${PROJECT}"
+          gitOps.push(HELM_DIR, COMMIT)
+        }
+      }
+    }
+    stage("Tagging Image") {
+      steps {
+        script {
+          echo "Tagging ${TAG} to latest"
+          IMAGE = "${DOCKER_REGISTRY}/${DOCKER_IMAGE}"
+          k8sBuildImage.crane(IMAGE, TAG, 'latest')
+        }
+      }
+    }
+  }
+}