Browse Source

add new dockerfile

Владимир Томишинец 5 years ago
parent
commit
b23fda63ac
3 changed files with 42 additions and 20 deletions
  1. 24 9
      Dockerfile
  2. 6 0
      Jenkinsfile
  3. 12 11
      Jenkinsfile-dev

+ 24 - 9
Dockerfile

@@ -1,10 +1,25 @@
+FROM registry.sdsys.ru/iru/iru-base:7.6 as build
+ENV JAVA_HOME=/usr/java/jdk1.8.0_191-amd64
+RUN mkdir /root/.ssh
+COPY id_rsa /root/.ssh
+#WORKDIR /web-registration-cloud/promo/build/libs/
+RUN yum install -y https://centos7.iuscommunity.org/ius-release.rpm \
+    && yum install -y wget unzip git2u figlet jdk1.8 maven \
+    && wget https://services.gradle.org/distributions/gradle-5.2.1-bin.zip -P /tmp \
+    && unzip -d /opt/gradle /tmp/gradle-*.zip \
+    && export GRADLE_HOME=/opt/gradle/gradle-5.2.1 \
+    && export PATH=${GRADLE_HOME}/bin:${PATH} \
+    && gradle -v \
+    && printf "Host git.alfatell.ru \n\tStrictHostKeyChecking no" > /root/.ssh/config \
+    && git clone ssh://gitolite@git.alfatell.ru:2223/web-registration-cloud.git \
+    && cd web-registration-cloud && git checkout newPromoSpring && cd customer-api \
+    && mvn clean install && cd ../promo/ \
+    && figlet -c Building Promo \
+    && gradle tasks bootWar \
+    && rm -rf /root/.ssh/id_rsa
+
 FROM registry.sdsys.ru/iru/iru-base:7.6
-ENV PATH="/usr/share/web-registry-promo/bin:$PATH" LANG="en_US.UTF-8" DB_CLUSTER="mongodb"
-EXPOSE 9000
-HEALTHCHECK --start-period=30s --interval=15s --timeout=5s --retries=2 CMD curl -f 127.0.0.1:9000 || exit 1
-CMD ["web-registry-promo", "-Dconfig.file=/etc/web-registry-promo/application.conf", "-Dlogger.file=/etc/web-registry-promo/application-logger.xml", "-Dpidfile.path=/var/run/play.pid"]
-RUN set -x \
-           && yum install web-registry-promo -y \
-#           && yum install -y web-registry-promo-1.1.0-SNAPSHOT20190314084221.noarch \
-           && yum clean all
-COPY application-logger.xml /etc/web-registry-promo/
+EXPOSE 9005
+HEALTHCHECK --start-period=30s --interval=15s --timeout=5s --retries=2 CMD curl -f 127.0.0.1:9005 || exit 1
+COPY --from=build /web-registration-cloud/promo/build/libs/promo-0.0.1-SNAPSHOT.war /opt/
+CMD ["java", "-jar", "/opt/promo-0.0.1-SNAPSHOT.war"]

+ 6 - 0
Jenkinsfile

@@ -29,6 +29,12 @@ pipeline {
   stages {
     stage("Build") {
       steps {
+        withCredentials([sshUserPrivateKey(credentialsId: 'provision', keyFileVariable: 'GIT_SSH_KEY', passphraseVariable: '', usernameVariable: 'GIT_SSH_USERNAME')]) {
+          sh """set +x
+                cat ${GIT_SSH_KEY} > ${WORKSPACE}/id_rsa 
+                chmod 600 ${WORKSPACE}/id_rsa
+             """
+        }
         echo "Building ${DOCKER_REGISTRY}/iru/${DOCKER_IMAGE}:${repo}-${BUILD_NUMBER}."
         sh "docker build --build-arg repo=${repo} --no-cache -t ${DOCKER_REGISTRY}/iru/${DOCKER_IMAGE}:${repo}-${BUILD_NUMBER} ."
       }

+ 12 - 11
Jenkinsfile-dev

@@ -38,19 +38,20 @@ pipeline {
     stage("Build") {
       steps {
         echo "Building ${DOCKER_REGISTRY}/${DOCKER_IMAGE}:${repo}-${BUILD_NUMBER}."
-        sh "docker build --build-arg repo=${repo} --no-cache -t ${DOCKER_REGISTRY}/${DOCKER_IMAGE}:${repo}-${BUILD_NUMBER} ."
-        script {
-           NEWTAG = sh script: "docker run --rm ${DOCKER_REGISTRY}/${DOCKER_IMAGE}:${repo}-${BUILD_NUMBER} rpm -q --qf %{VERSION}-%{RELEASE} ${PACKAGE_NAME} 2> /dev/null", returnStdout: true
-           NEWTAG = repo + "-" + NEWTAG + "_" + BUILD_NUMBER
-           echo "NEWTAG is $NEWTAG"
+        withCredentials([sshUserPrivateKey(credentialsId: 'provision', keyFileVariable: 'GIT_SSH_KEY', passphraseVariable: '', usernameVariable: 'GIT_SSH_USERNAME')]) {
+          sh """set +x
+                cat ${GIT_SSH_KEY} > ${WORKSPACE}/id_rsa 
+                chmod 600 ${WORKSPACE}/id_rsa
+             """
         }
-        sh "docker tag ${DOCKER_REGISTRY}/${DOCKER_IMAGE}:${repo}-${BUILD_NUMBER} ${DOCKER_REGISTRY}/${DOCKER_IMAGE}:${NEWTAG}"
+        sh "docker build --build-arg repo=${repo} --no-cache -t ${DOCKER_REGISTRY}/${DOCKER_IMAGE}:${repo}-${BUILD_NUMBER} ."
+        
       }
     }
     stage("Publish") {
       steps {
-        echo "Publishing ${DOCKER_REGISTRY}/${DOCKER_IMAGE}:${NEWTAG}"
-        sh "docker push ${DOCKER_REGISTRY}/${DOCKER_IMAGE}:${NEWTAG}"
+        echo "Publishing ${DOCKER_REGISTRY}/${DOCKER_IMAGE}:${repo}-${BUILD_NUMBER}"
+        sh "docker push ${DOCKER_REGISTRY}/${DOCKER_IMAGE}:${repo}-${BUILD_NUMBER}"
       }
     }
     stage("Update") {
@@ -60,7 +61,7 @@ pipeline {
           for (String item : service_update.split()) {
             echo "Updating ${item}"
             try{
-               sh "DOCKER_HOST=${DHOST} docker service update ${item} --image ${DOCKER_REGISTRY}/${DOCKER_IMAGE}:${NEWTAG}"
+               sh "DOCKER_HOST=${DHOST} docker service update ${item} --image ${DOCKER_REGISTRY}/${DOCKER_IMAGE}:${repo}-${BUILD_NUMBER}"
             }
             catch(err){
                echo "Recovering service $item"
@@ -74,14 +75,14 @@ pipeline {
     stage("Tagging"){
       steps{
         echo "Setting latest tag"
-        sh """docker tag ${DOCKER_REGISTRY}/${DOCKER_IMAGE}:${NEWTAG} ${DOCKER_REGISTRY}/${DOCKER_IMAGE}:latest
+        sh """docker tag ${DOCKER_REGISTRY}/${DOCKER_IMAGE}:${repo}-${BUILD_NUMBER} ${DOCKER_REGISTRY}/${DOCKER_IMAGE}:latest
               docker push ${DOCKER_REGISTRY}/${DOCKER_IMAGE}:latest"""
         echo "Updating tag info in ${SWARM_GIT_NAME} repository"
         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}
                 cd ${SWARM_GIT_NAME}
-                echo -n ${NEWTAG} > tags/${DOCKER_IMAGE}.dev-version
+                echo -n ${repo}-${BUILD_NUMBER} > tags/${DOCKER_IMAGE}.dev-version
                 git add -A
                 git config --global user.email "${JENKINS_MAIL}"
                 git config --global user.name "Jenkins"