Jenkins++:Pipeline腳本 V1.0

// 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} | 臨時鏡像已刪除"
        }
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章