瀏覽代碼

add Jenkinsfile, change Dockerfile

Tomishinets Vladimir 4 年之前
父節點
當前提交
22bbc975a2
共有 2 個文件被更改,包括 114 次插入19 次删除
  1. 10 19
      Dockerfile
  2. 104 0
      devK8s.Jenkinsfile

+ 10 - 19
Dockerfile

@@ -1,40 +1,31 @@
-FROM registry.sdsys.ru/iru/iru-base:7.6
-ENTRYPOINT ["/tmp/docker-entrypoint.sh"]
-COPY docker-entrypoint.sh \
+FROM jcr.infoclinica.ru/iru/iru-base:7.6
+ENTRYPOINT ["/entrypoint.sh"]
+COPY entrypoint.sh \
      healthcheck.sh \
-     /tmp/
-COPY mongodb-org-3.6.repo /etc/yum.repos.d/
-ENV CATALINA_HOME="/opt/tomcat"
-ENV PATH=$CATALINA_HOME/bin:$PATH \
+     /
+ENV CATALINA_HOME="/opt/tomcat" \
+    PATH=$CATALINA_HOME/bin:$PATH \
     CATALINA_OPTS="-Dconfig.file=/etc/web-laboratory/application.conf -Dnet.spy.log.LoggerImpl=net.spy.memcached.compat.log.SunLogger" \
     JAVA_HOME=/usr/java/default \
     JAVA_OPTS="-Xms512M -Xmx1024M -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Addresses=true" \
     WORKDIR=$CATALINA_HOME \
-    DB_CLUSTER=mongodb \
-    APPNET=labnetwork \
-    ADMIN_HOST=admin-lab
+    ADMIN_HOST=admin.lab
 EXPOSE 8090 9000 2551
-HEALTHCHECK --start-period=30s --interval=20s --timeout=10s --retries=2 CMD /tmp/healthcheck.sh
+HEALTHCHECK --start-period=30s --interval=20s --timeout=10s --retries=2 CMD /healthcheck.sh
 ARG repo=prod
 ARG version=16.1
 ARG memcached_version=2.3.2
 ARG spymemcached_version=2.12.3
 RUN set -x \
            && curl https://repo.infoclinica.ru/yum/centos/sds-${repo}-${version}.repo -o /etc/yum.repos.d/sds-${repo}-${version}.repo \
-           && yum install iputils -y \
-           && yum install tomcat-8.0.26-01 -y \
-           && yum install web-laboratory -y \
-           && yum install mongodb-org-shell -y \
+           && yum install -y iputils tomcat-8.0.26-01 web-laboratory \
            && yum clean all \
-           && chmod +x /tmp/docker-entrypoint.sh \
-           && chmod +x /tmp/healthcheck.sh \
+           && chmod +x /entrypoint.sh /healthcheck.sh \
            && curl https://repo1.maven.org/maven2/de/javakaffee/msm/memcached-session-manager/${memcached_version}/memcached-session-manager-${memcached_version}.jar -o /opt/tomcat/lib/memcached-session-manager-${memcached_version}.jar \
            && curl https://repo1.maven.org/maven2/de/javakaffee/msm/memcached-session-manager-tc8/${memcached_version}/memcached-session-manager-tc8-${memcached_version}.jar -o /opt/tomcat/lib/memcached-session-manager-tc8-${memcached_version}.jar \
            && curl https://repo1.maven.org/maven2/net/spy/spymemcached/${spymemcached_version}/spymemcached-${spymemcached_version}.jar -o /opt/tomcat/lib/spymemcached-${spymemcached_version}.jar \
-           && chown -R tomcat:tomcat /etc/web-laboratory \
            && cd /opt/tomcat/conf/web-laboratory/localhost \
            && ln -s /etc/web-laboratory/ROOT.xml ROOT.xml
-COPY ROOT.xml /etc/web-laboratory/
 COPY server.xml /opt/tomcat/conf/
 RUN chown -R tomcat:tomcat /opt/apache-tomcat-8.0.26 \
            && chown -R tomcat:tomcat /etc/web-laboratory

+ 104 - 0
devK8s.Jenkinsfile

@@ -0,0 +1,104 @@
+@Library('jenkins-library@master') _
+def Label = "node-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/node'
+    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/node.git'
+    JENKINS_MAIL='jenkins.dev@sdsys.ru'
+    DOCKER_REGISTRY='jcr.infoclinica.ru'
+    PROJECT=''
+    CHART_NAME=''
+    HELM_DIR=''
+    TAG=''
+  }
+  parameters {
+    string(
+      name: "repo",
+      defaultValue: "prod",
+      description: "Repository to build and/or deploy from."
+    )
+    string(
+      name: "version",
+      defaultValue: "16.1",
+      description: "Witch version to build and/or deploy."
+    )
+    string(
+      name: "mailto",
+      defaultValue: "admin@sdsys.ru",
+      description: "Email which has to be notified."
+    )
+  }
+  stages {
+    stage("Prepare to Build") {
+      steps {
+        script {
+          gitOps.clone(HELM_GIT_URL)
+          HELM_DIR = dirOps.calculateDir(HELM_GIT_URL)
+          CHART_PATH = "${HELM_DIR}/${CHART_SUBPATH}"
+          PROJECT = DOCKER_IMAGE.split("/")[1]
+        }
+      }
+    }
+    stage("Build Image") {
+      steps {
+        script {
+          echo "Build Image with Kaniko"
+          REGISTRY = "${DOCKER_REGISTRY}/${DOCKER_IMAGE}"
+          ARGS = [ "repo=${repo}", "version=${version}" ]
+          TAG = "${repo}-${BUILD_NUMBER}"
+          k8sBuildImage.kaniko(REGISTRY, TAG, ARGS)
+        }
+      }
+    }
+    stage("Update Helm Chart values.yaml") {
+      steps {
+        script {
+          echo "Update Helm Chart"
+          def data = readYaml file: "${CHART_PATH}/values.yaml"
+          TAG_PATH = "images.${PROJECT}.dev"
+          yamlOps.updateBuilder(TAG_PATH, data, TAG)
+          writeYaml file: "${CHART_PATH}/values.yaml", data: data, overwrite: true
+        }
+      }
+    }
+  //   stage("Update APP") {
+  //     steps {
+  //       script {
+  //         CHART_NAME = CHART_SUBPATH.split("/")[1]
+  //         try {
+  //           echo "Update APP"
+  //           k8sHelmOps.upgrade(CLOUD, NAMESPACE, CHART_NAME, CHART_PATH)
+  //         }
+  //         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 ${PROJECT}"
+  //         gitOps.push(HELM_DIR, COMMIT)
+  //       }
+  //     }
+  //   }
+  }
+}