lith 2 лет назад
Родитель
Сommit
6d6ade0dbd
1 измененных файлов с 78 добавлено и 21 удалено
  1. 78 21
      Publish/DevOps/jenkins-bash/release.jenkins.pipeline

+ 78 - 21
Publish/DevOps/jenkins-bash/release.jenkins.pipeline

@@ -1,47 +1,104 @@
 pipeline { 
-    agent none
+    agent any
 
     environment {
-        basePath = "/root/docker-data/dev/jenkins/jenkins_home/workspace/Repo/Sers/code"
+        basePath = "xx/develop/${env.build_number}"
         APPNAME = "Sers"
+        SVN_PATH = "  "
         SVN_USERNAME = "jenkins"
-        SVN_PASSWORD = "xxxxxx"
-        DOCKER_USERNAME = "serset"
-        DOCKER_PASSWORD = "xxxxxx"
-        NUGET_SERVER = "https://api.nuget.org/v3/index.json"
-        NUGET_KEY = "xxxxxx"
-        NUGET_PATH = "/root/docker-data/dev/jenkins/jenkins_home/workspace/.nuget"
+        SVN_PASSWORD = "  "
+        NUGET_PATH = "/root/docker-cache/jenkins/jenkins_home/workspace/.nuget"
+
+        DEV_NUGET_SERVER = "http://nuget.lith.cloud:8"
+        DEV_NUGET_KEY = "  "
+        DEV_DOCKER_SERVER = "cache.docker.lith.cloud:8"
+        DEV_DOCKER_USERNAME = " "
+        DEV_DOCKER_PASSWORD = " "
+
+        PRD_NUGET_SERVER = "https://api.nuget.org/v3/index.json"
+        PRD_NUGET_KEY = "  "
+        PRD_DOCKER_SERVER = "serset"
+        PRD_DOCKER_USERNAME = "serset"
+        PRD_DOCKER_PASSWORD = "  "
+
     }
     stages {
-        stage('(x.0)confirm') { 
-            agent any 
+        stage('#1.1 develop - init code') { 
+            steps {
+                echo "build_number: ${env.build_number}"
+                echo "pull code from svn to Path: $basePath/develop"
+                sh "chroot /host bash -c 'set -e; mkdir -p $basePath/develop;chmod 777 $basePath/develop;    docker run -i --rm -v $basePath/develop:/root/svn docker.lith.cloud:8/dockerhub/serset/svn-client svn checkout \"$SVN_PATH\" /root/svn --username \"$SVN_USERNAME\" --password \"$SVN_PASSWORD\" --no-auth-cache > /dev/null;  '"
+
+		sh "chroot /host bash -c 'set -e; export versionSuffix=.${env.build_number}-preview;   cd $basePath/develop/Publish/DevOps/build-bash; bash 20.change-release-version.bash;  '"
+            } 
+        }
+
+        stage('#1.2 develop - build') {
+            steps {
+                sh "chroot /host bash -c 'set -e; export APPNAME=$APPNAME; export NUGET_PATH=$NUGET_PATH;    cd $basePath/develop/Publish/DevOps/build-bash; bash startup.bash;  '"
+            } 
+        }
+
+        stage('#1.3 develop - push') { 
             steps {
-                timeout(10) {
+                sh "chroot /host bash -c 'set -e; export APPNAME=$APPNAME; export NUGET_PATH=$NUGET_PATH;    export NUGET_SERVER=$DEV_NUGET_SERVER; export NUGET_KEY=$DEV_NUGET_KEY;  export DOCKER_SERVER=${env.DEV_DOCKER_SERVER};export DOCKER_USERNAME=${env.DEV_DOCKER_USERNAME};export DOCKER_PASSWORD=${env.DEV_DOCKER_PASSWORD};    cd $basePath/develop/Publish/DevOps/release-bash; bash startup.bash;  '"
+            } 
+        }
+
+        stage('#2 deploy to prod?') { 
+            steps {
+                timeout(time:1800,unit:'SECONDS') {
                     script { 
-                        inputData = input message: "Are you sure to build and release?", ok: 'Proceed?', parameters: [string(defaultValue: '', description: 'text comment', name: 'comment')], submitterParameter: 'APPROVER' 
+                        inputData = input message: "Are you sure to continue to release to prod?", ok: 'Proceed?', parameters: [string(defaultValue: '', description: 'text comment', name: 'comment')], submitterParameter: 'APPROVER' 
                     } 
                 }
             } 
         }
-        stage('(x.1)svn-update') { 
-            agent any 
+
+        stage('#3.1 prd - init code') { 
             steps {
-                sh "chroot /host bash -c 'set -e; export APPNAME=$APPNAME;export SVN_USERNAME=$SVN_USERNAME;export SVN_PASSWORD=$SVN_PASSWORD;export DOCKER_USERNAME=$DOCKER_USERNAME;export DOCKER_PASSWORD=$DOCKER_PASSWORD;export NUGET_KEY=$NUGET_KEY;export NUGET_SERVER=$NUGET_SERVER;export NUGET_PATH=$NUGET_PATH;    cd $basePath/Publish/DevOps/jenkins-bash;bash 01.svn-update.sh;  '"
+                echo "build_number: ${env.build_number}"
+                echo "pull code from svn to Path: $basePath/prd"
+                sh "chroot /host bash -c 'set -e; mkdir -p $basePath/prd;chmod 777 $basePath/prd;    docker run -i --rm -v $basePath/prd:/root/svn docker.lith.cloud:8/dockerhub/serset/svn-client svn checkout \"$SVN_PATH\" /root/svn --username \"$SVN_USERNAME\" --password \"$SVN_PASSWORD\" --no-auth-cache > /dev/null;  '"
+
+                sh "chroot /host bash -c 'set -e; export versionSuffix=.${env.build_number};   cd $basePath/prd/Publish/DevOps/build-bash; bash 20.change-release-version.bash;  '"
             } 
         }
 
-        stage('(x.4)build') {
-            agent any 
+        stage('#3.2 prd - build') {
             steps {
-                sh "chroot /host bash -c 'set -e; export APPNAME=$APPNAME;export SVN_USERNAME=$SVN_USERNAME;export SVN_PASSWORD=$SVN_PASSWORD;export DOCKER_USERNAME=$DOCKER_USERNAME;export DOCKER_PASSWORD=$DOCKER_PASSWORD;export NUGET_KEY=$NUGET_KEY;export NUGET_SERVER=$NUGET_SERVER;export NUGET_PATH=$NUGET_PATH;    cd $basePath/Publish/DevOps/build-bash; bash startup.bash;  '"
+		sh "chroot /host bash -c 'set -e; export APPNAME=$APPNAME; export NUGET_PATH=$NUGET_PATH;    cd $basePath/prd/Publish/DevOps/build-bash; bash startup.bash;  '"
+		sh "chroot /host bash -c 'set -e; export APPNAME=$APPNAME; export NUGET_PATH=$NUGET_PATH;    cd $basePath/prd/Publish/DevOps/build-multiple-bash; bash startup.bash;  '"
             } 
         }
 
-        stage('(x.5)release-bash') { 
-            agent any 
+        stage('#3.3 prd - push') { 
             steps {
-                sh "chroot /host bash -c 'set -e; export APPNAME=$APPNAME;export SVN_USERNAME=$SVN_USERNAME;export SVN_PASSWORD=$SVN_PASSWORD;export DOCKER_USERNAME=$DOCKER_USERNAME;export DOCKER_PASSWORD=$DOCKER_PASSWORD;export NUGET_KEY=$NUGET_KEY;export NUGET_SERVER=$NUGET_SERVER;export NUGET_PATH=$NUGET_PATH;    cd $basePath/Publish/DevOps/release-bash; bash startup.bash;  '"
+                sh "chroot /host bash -c 'set -e; export APPNAME=$APPNAME;export NUGET_PATH=$NUGET_PATH;    export NUGET_SERVER=$DEV_NUGET_SERVER;export NUGET_KEY=$DEV_NUGET_KEY;  export DOCKER_SERVER=${env.DEV_DOCKER_SERVER};export DOCKER_USERNAME=${env.DEV_DOCKER_USERNAME};export DOCKER_PASSWORD=${env.DEV_DOCKER_PASSWORD};    cd $basePath/prd/Publish/DevOps/release-bash; bash startup.bash;  '"
             } 
         }
+ 
+    } 
+
+    post {
+        always {
+            timeout(time:3600,unit:'SECONDS') {
+                script { 
+                  env.inputData = input message: "Continue to clean temp files, will be waiting for 3600 seconds. click abort will skip clean.", ok: 'Proceed', parameters: [string(defaultValue: '', description: 'text comment', name: 'comment')], submitterParameter: 'approver'
+		  echo "input: ${env.inputData}"
+               }
+            }	    
+            echo "clean temp files"
+            sh "rm -rf /var/jenkins_home/workspace/Sers/develop/${env.build_number}"
+        }
+        success {
+            echo "build success !"
+        }
+        failure {
+            echo "build failure !"
+        }
+        aborted {
+            echo "build aborted !"
+        }
     } 
 }