1 #!/usr/bin/env groovy Jenkinsfile 2 node { 3 //服務名稱 4 def service_name = "**" 5 //包名 6 def service_bag_name = "**.jar" 7 //制品庫目錄 8 service_product = "/data/server/**/project-demo" 9 //工作目錄 10 workspaces="/data/**/**-${service_name}" 11 12 if(choice_status=="delop" && choice_build_number==""){ 13 //拉取git代碼/maven編譯/歸檔成品 14 stage('Build'){ 15 //創建制品庫 16 ws('/data/server/jenkinsworkspaces/pipline-demo') { 17 // some block 18 //拉取git分支代碼 19 git branch: 'test', credentialsId: '**', url: 'http://gitlab.lalala.cn/**/**.git' 20 //maven編譯 21 sh label: 'maven編譯', script: '/data/server/maven/bin/mvn clean install' 22 //成品歸檔,便於后期開發驗證成品包是否可用 23 archiveArtifacts artifacts: "**/target/${service_bag_name}", onlyIfSuccessful: true 24 } 25 } 26 //生成制品 27 stage("artifacts"){ 28 echo "Running ${env.BUILD_ID} on ${env.JENKINS_URL}" 29 //創建制品庫 30 dir("${service_product}/${service_name}/${env.BUILD_ID}") { 31 // some block 32 writeFile file:'dummy', text:'' 33 } 34 //將成品文件存放入制品庫 35 //此處省略,通過將將成品文件存放入制品庫 36 } 37 38 stage("Test"){ 39 echo "testing...." 40 echo "${workspaces}" 41 //此處省略,驗證制品庫中成品文件是否可用 42 } 43 44 stage("Deploy"){ 45 echo "deploying...." 46 //1.查找制品庫中需要發布的文件,通過scp方式傳輸至服務器服務運行目錄 47 //2.查找制品庫中需要發布的文件,通過jenkins sedn build artifacts over ssh方式傳輸至服務器服務運行目錄 48 } 49 50 }else if(choice_status=="rollback" && choice_build_number!="") { 51 stage("Rollback"){ 52 echo "rollbacking...." 53 echo "${service_name}" 54 echo "${service_bag_name}" 55 echo "${choice_build_number}" 56 sh label: '查找成品文件', script: """ls -lh ${service_product}/${service_name}/${choice_build_number}""" 57 } 58 59 } 60 }
部分代碼已省略,請自行腦補,服務啟動腳本需要自行編寫,本文暫不描述.