// GitLab的憑證 def git_auth="e3c9f3d5-6a52-4c10-86a3-80911a71bb24" // 項目GitLab倉庫 def git_url="http://192.168.1.101:82/test-team/tensquare_parent.git" //鏡像的版本號 def tag = "latest" //Harbor的url地址 def harbor_url = "192.168.1.101:7701" //鏡像庫項目名稱 def harbor_project = "tensquare" //Harbor的登錄憑證ID def harbor_auth = "737a6d3f-8be3-4ec0-a36a-b1afd9a8f380" node{ //獲取當前選擇的項目名稱 def selectedProjectNames = "${project_name}".split(",") stage('拉取代碼'){ checkout([ $class: 'GitSCM', branches: [ [ name: '*/${branch}' ] ], doGenerateSubmoduleConfigurations: false, extensions: [ ], submoduleCfg: [ ], userRemoteConfigs: [ [ credentialsId: "${git_auth}", url: "${git_url}" ] ] ]) } stage('編譯,安裝公共子工程') { sh "mvn -f tensquare_common clean install" } stage('編譯,打包微服務工程,上傳鏡像') { // 遍歷所有項目 for(int i=0;i<selectedProjectNames.length;i++){ def projectInfo = selectedProjectNames[i]; echo "項目 | ${projectInfo} | 開始製作運行" //當前遍歷的項目名稱 def currentProjectName = "${projectInfo}" //製作鏡像 sh "mvn -f ${currentProjectName} clean package dockerfile:build" //定義鏡像名稱 def imageName = "${currentProjectName}:${tag}" //對鏡像打上標籤 sh "docker tag ${imageName} ${harbor_url}/${harbor_project}/${imageName}" //把鏡像推送到Harbor withCredentials([usernamePassword(credentialsId: "${harbor_auth}", passwordVariable: 'password', usernameVariable: 'username')]) { //登錄到Harbor sh "docker login -u ${username} -p ${password} ${harbor_url}" //鏡像上傳 sh "docker push ${harbor_url}/${harbor_project}/${imageName}" sh "echo 鏡像上傳成功" } echo "項目 | ${projectInfo} | 製作完成" //刪除本地鏡像 sh "docker rmi -f `docker images -q --filter reference=${imageName}`" //sh "docker rmi -f `docker images -q --filter reference=${harbor_url}/${harbor_project_name}/${imageName}`" echo "項目 | ${projectInfo} | 臨時鏡像已刪除" } } }