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

+ 95 - 0
prodK8s.Jenkinsfile

@@ -0,0 +1,95 @@
+@Library('jenkins-library@master') _
+def Label = "promo-build-${UUID.randomUUID().toString()}"
+pipeline {
+  options {
+    buildDiscarder logRotator(numToKeepStr: '10')
+    disableConcurrentBuilds()
+  }
+  agent {
+    kubernetes {
+      label Label
+      yaml libraryResource('promoPodDefinition.yaml')
+    }
+  }
+  environment {
+    CLOUD='cloud-it-k8s'
+    DOCKER_IMAGE='iru/promo'
+    CHART_PATH='helm/info'
+    NAMESPACE='info'
+    HELM_GIT_URL='ssh://git@git.sdsys.ru:8022/iru/k8s.git'
+    APP_GIT_URL='ssh://gitolite@git.alfatell.ru:2223/web-registration-cloud.git'
+    JENKINS_MAIL='jenkins.dev@sdsys.ru'
+    DOCKER_REGISTRY='jcr.infoclinica.ru'
+    CHART_NAME=''
+    APP_DIR=''
+    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)
+        }
+      }
+    }
+    stage("Update Helm Chart values.yaml") {
+      steps {
+        script {
+          echo "Update values.yaml"
+          PROJECT = DOCKER_IMAGE.split("/")[1]
+          def data = readYaml file: "${HELM_DIR}/${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: "${HELM_DIR}/${CHART_PATH}/values.yaml", data: data, overwrite: true
+        }
+      }
+    }
+    stage("Update APP") {
+      steps {
+        script {
+          CHART = "${HELM_DIR}/${CHART_PATH}"
+          CHART_NAME = CHART_PATH.split("/")[1]
+          try {
+            echo "Update APP"
+            k8sHelmOps.upgrade(CLOUD, NAMESPACE, CHART_NAME, CHART, 'dev')
+          }
+          catch(err) {
+            echo "Recovering APP"
+            k8sHelmOps.rollback(CLOUD, NAMESPACE, CHART_NAME)
+            throw err
+          }
+        }
+      }
+    }
+    stage("Push changes to REPO") {
+      steps {
+        script {
+          echo "Push changes to Repo"
+          COMMIT = "Version update ${APP_DIR}"
+          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')
+        }
+      }
+    }
+  }
+}