Browse Source

Добавил изменения по задаче Redmine 186407

Tomishinets Vladimir 4 years ago
parent
commit
974724898a
3 changed files with 119 additions and 33 deletions
  1. 21 0
      Dockerfile-promo-sdk
  2. 8 0
      Dockerfile-promo-seo
  3. 90 33
      devK8s.Jenkinsfile

+ 21 - 0
Dockerfile-promo-sdk

@@ -0,0 +1,21 @@
+FROM node:alpine
+ARG DB_CLUSTER=mongodb1:27017,mongodb2:27018,mongodb3:27019
+ARG SERVER_PORT=9005
+
+RUN apk add --no-cache curl
+
+USER node
+
+HEALTHCHECK --start-period=40s --interval=15s --timeout=5s --retries=2 CMD curl -f 127.0.0.1:${SERVER_PORT} || exit 1
+COPY web-sdk-demo/js /home/node/promo-sdk/js
+COPY web-sdk-demo/page /home/node/promo-sdk/page
+COPY web-sdk-demo/static /home/node/promo-sdk/static
+COPY web-sdk-demo/style /home/node/promo-sdk/style
+COPY web-sdk-demo/node_modules /home/node/promo-sdk/node_modules
+COPY web-sdk-demo/server.js /home/node/promo-sdk/server.js
+COPY web-sdk-demo/package.json /home/node/promo-sdk/package.json
+COPY version /tmp/version
+
+WORKDIR /home/node/promo-sdk
+
+CMD ["npm", "run", "start"]

+ 8 - 0
Dockerfile-promo-seo

@@ -0,0 +1,8 @@
+FROM openjdk:8-jre
+ARG DB_CLUSTER=mongodb1:27017,mongodb2:27018,mongodb3:27019
+ARG SERVER_PORT=9000
+
+HEALTHCHECK --start-period=30s --interval=15s --timeout=5s --retries=2 CMD curl -f 127.0.0.1:${SERVER_PORT} || exit 1
+COPY promo-0.0.1-SNAPSHOT.war /
+COPY version /tmp/
+CMD ["java", "-jar", "/promo-0.0.1-SNAPSHOT.war"]

+ 90 - 33
devK8s.Jenkinsfile

@@ -1,3 +1,5 @@
+PROMO_SDK=[ service_name: 'info_promo-sdk', image: 'web-registration/promo-sdk', repo: 'git@github.com:icruportal/web-sdk-demo.git', dockerfile: 'Dockerfile-promo-sdk' ]
+PROMO_SEO=[ service_name: 'info_promo-seo', image: 'web-registration/promo-seo', repo: 'git@github.com:icruportal/web-registration.git', dockerfile: 'Dockerfile-promo-seo' ]
 @Library('jenkins-library-iru@master') _
 def Label = "web-registration-promo-build-${UUID.randomUUID().toString()}"
 pipeline {
@@ -13,10 +15,7 @@ pipeline {
   }
   environment {
     CONTEXT='provision@sdsys.office'
-    DOCKER_IMAGE='web-registration/promo'
     HELM_GIT_URL='ssh://git@git.sdsys.ru:8022/iru/k8s.git'
-    APP_GIT_URL='git@github.com:icruportal/web-registration.git'
-    SOURCE_GIT_URL='git@github.com:icruportal/web-registration.git'
     JENKINS_MAIL='jenkins.dev@sdsys.ru'
     DOCKER_REGISTRY='images.sdsys.ru'
     VALUES_FILE = ''
@@ -25,6 +24,11 @@ pipeline {
     TAG=''
   }
   parameters {
+    choice (
+      choices: 'promo-seo\npromo-sdk',
+      description: 'Which repo to use?',
+      name: 'APP-NAME'
+    )
     string(
       name: "branch",
       defaultValue: "release",
@@ -37,6 +41,26 @@ pipeline {
     )
   }
   stages {
+    stage("Calculate Variables") {
+      steps {
+        script {
+          switch (APP-NAME) {
+            case 'promo-sdk':
+              SOURCE_GIT_URL=PROMO_SDK.repo
+              DOCKER_IMAGE=PROMO_SDK.image
+              SERVICE_NAME=PROMO_SDK.service_name
+              DOCKER_FILE=PROMO_SDK.dockerfile
+              break
+            case 'promo-seo':
+              SOURCE_GIT_URL=PROMO_SEO.repo
+              DOCKER_IMAGE=PROMO_SEO.image
+              SERVICE_NAME=PROMO_SEO.service_name
+              DOCKER_FILE=PROMO_SEO.dockerfile
+              break
+          }
+        }
+      }
+    }
     stage("Prepare to build") {
       steps {
         script {
@@ -55,7 +79,10 @@ pipeline {
         }
       }
     }
-    stage("Build APP") {
+    stage("Build APP PROMO-SEO") {
+      when {
+        expression { params.APP-NAME == 'promo-seo' }
+      }
       steps {
         script {
           echo "Build customer-api"
@@ -73,7 +100,10 @@ pipeline {
         }
       }
     }
-    stage("Build Image") {
+    stage("Build Image PROMO-SEO") {
+      when {
+        expression { params.APP-NAME == 'promo-seo' }
+      }
       steps {
         script {
           sh "cp ${SOURCE_DIR}/promo/build/libs/promo-0.0.1-SNAPSHOT.war ."
@@ -81,48 +111,75 @@ pipeline {
           COMMIT = sh(script: "cat version 2> /dev/null", returnStdout: true).trim()
           IMAGE_TO_PUSH = "${DOCKER_REGISTRY}/${DOCKER_IMAGE}:${COMMIT}-${BUILD_NUMBER}"
           echo "Build ${IMAGE_TO_PUSH} with Kaniko"
-          k8sBuildImage.kaniko(IMAGE_TO_PUSH)
+          k8sBuildImage.kaniko(IMAGE_TO_PUSH,,DOCKER_FILE)
         }
       }
     }
-    stage("Update Helm Chart dev.yaml") {
-      steps {
-        script {
-          TAG_PATH = "images." + DOCKER_IMAGE.split("/")[1]
-          echo "Update ${TAG_PATH} to ${IMAGE_TO_PUSH} in ${VALUES_FILE}"
-          gitOps.clone(HELM_GIT_URL)
-          def data = readYaml file: "${VALUES_FILE}"
-          yamlOps.updateBuilder(TAG_PATH, data, IMAGE_TO_PUSH)
-          writeYaml file: "${VALUES_FILE}", data: data, overwrite: true
-        }
+    stage("Build APP PROMO-SDK") {
+      when {
+        expression { params.APP-NAME == 'promo-sdk' }
       }
-    }
-    stage("Update APP") {
       steps {
         script {
-          RELEASE_NAME = DOCKER_IMAGE.split("/")[0]
-          NAMESPACE = DOCKER_IMAGE.split("/")[0]
-          try {
-            echo "Update APP"
-            k8sHelmOps.upgrade(CONTEXT, NAMESPACE, RELEASE_NAME, CHART_PATH, VALUES_FILE)
-          }
-          catch(err) {
-            echo "Recovering APP"
-            k8sHelmOps.rollback(CONTEXT, NAMESPACE, RELEASE_NAME)
-            throw err
-          }
+          echo "Build APP"
+          dir("${SOURCE_DIR}") {
+            buildOps.npm()
         }
       }
     }
-    stage("Push changes to REPO") {
+    stage("Build Image PROMO-SDK") {
+      when {
+        expression { params.APP-NAME == 'promo-sdk' }
+      }
       steps {
         script {
-          echo "Push changes to Repo"
-          COMMIT = "Version update " + DOCKER_IMAGE.split("/")[1]
-          gitOps.push(HELM_DIR, COMMIT)
+          IMAGE_TO_PUSH = "${DOCKER_REGISTRY}/${DOCKER_IMAGE}:${COMMIT}-${BUILD_NUMBER}"
+          echo "Build ${IMAGE_TO_PUSH} with Kaniko"
+          dir("${SOURCE_DIR}") {
+            COMMIT = sh(script: "cat version 2> /dev/null", returnStdout: true).trim()
+            k8sBuildImage.kaniko(IMAGE_TO_PUSH,,DOCKER_FILE)
+          }
         }
       }
     }
+    // stage("Update Helm Chart dev.yaml") {
+    //   steps {
+    //     script {
+    //       TAG_PATH = "images." + DOCKER_IMAGE.split("/")[1]
+    //       echo "Update ${TAG_PATH} to ${IMAGE_TO_PUSH} in ${VALUES_FILE}"
+    //       gitOps.clone(HELM_GIT_URL)
+    //       def data = readYaml file: "${VALUES_FILE}"
+    //       yamlOps.updateBuilder(TAG_PATH, data, IMAGE_TO_PUSH)
+    //       writeYaml file: "${VALUES_FILE}", data: data, overwrite: true
+    //     }
+    //   }
+    // }
+    // stage("Update APP") {
+    //   steps {
+    //     script {
+    //       RELEASE_NAME = DOCKER_IMAGE.split("/")[0]
+    //       NAMESPACE = DOCKER_IMAGE.split("/")[0]
+    //       try {
+    //         echo "Update APP"
+    //         k8sHelmOps.upgrade(CONTEXT, NAMESPACE, RELEASE_NAME, CHART_PATH, VALUES_FILE)
+    //       }
+    //       catch(err) {
+    //         echo "Recovering APP"
+    //         k8sHelmOps.rollback(CONTEXT, NAMESPACE, RELEASE_NAME)
+    //         throw err
+    //       }
+    //     }
+    //   }
+    // }
+    // stage("Push changes to REPO") {
+    //   steps {
+    //     script {
+    //       echo "Push changes to Repo"
+    //       COMMIT = "Version update " + DOCKER_IMAGE.split("/")[1]
+    //       gitOps.push(HELM_DIR, COMMIT)
+    //     }
+    //   }
+    // }
   }
   post {
     failure {