天天看點

Jenkins-好程式員-使用Docker建構并推送到私有倉庫一、安裝插件二、建立憑據三、編寫 Pipeline使用憑據和 Gialab 深度內建

一、安裝插件

docker

用于使用 Docker 容器進行建構步驟

docker-pipeline

用于使用項目根目錄下的

Dockerfile

建構鏡像,并上傳到鏡像倉庫

用于在 Docker 鏡像内部實作建構步驟,而不是在 Jenkins 節點本地。

例如像下面這樣

docker.image('maven:3.3.3-jdk-8').inside {
  git '…your-sources…'
  sh 'mvn -B clean install'
}
           

上面是一個完整的管道腳本。 inside将要:

1 自動擷取代理和工作區(不需要額外的node塊)。

2 将請求的映像拉到Docker伺服器(如果本地倉庫沒有此鏡像)。

3 啟動運作該映像的容器。

4 使用相同的檔案路徑将Jenkins工作空間作為“卷”安裝在容器内。

5 運作您的建構步驟。像這樣的外部程序sh将被包裝,docker exec是以它們将在容器内運作。其他步驟(例如測試報告)未經修改即可運作:它們仍然可以通路由建構步驟建立的工作空間檔案。

6 在建構完成後,停止容器并丢棄其消耗的所有存儲。

7 記錄該建構使用了指定圖像的事實。這将解鎖其他Jenkins插件中的功能:您可以使用映像跟蹤所有項目,或者将更新的映像推送到Docker系統資料庫時将該項目配置為自動觸發。如果您使用Docker Traceability插件,您還可以檢視Docker伺服器上映像部署的曆史記錄。

Jenkins-好程式員-使用Docker建構并推送到私有倉庫一、安裝插件二、建立憑據三、編寫 Pipeline使用憑據和 Gialab 深度內建
Jenkins-好程式員-使用Docker建構并推送到私有倉庫一、安裝插件二、建立憑據三、編寫 Pipeline使用憑據和 Gialab 深度內建

二、建立憑據

這裡是直接安裝生産環境來作為背景做練習,企業中往往會使用私用鏡像倉庫 Harbor。

在這裡需要建立連接配接到 Harbor 倉庫的憑據,就是使用者名和密碼。

Jenkins-好程式員-使用Docker建構并推送到私有倉庫一、安裝插件二、建立憑據三、編寫 Pipeline使用憑據和 Gialab 深度內建
Jenkins-好程式員-使用Docker建構并推送到私有倉庫一、安裝插件二、建立憑據三、編寫 Pipeline使用憑據和 Gialab 深度內建
Jenkins-好程式員-使用Docker建構并推送到私有倉庫一、安裝插件二、建立憑據三、編寫 Pipeline使用憑據和 Gialab 深度內建
Jenkins-好程式員-使用Docker建構并推送到私有倉庫一、安裝插件二、建立憑據三、編寫 Pipeline使用憑據和 Gialab 深度內建

三、編寫 Pipeline

pipeline {
  // 設定全局環境變量
  environment {
    url = 'ssh://[email protected]:/root/simple-java-maven-docker-app.git'

  }
  // 全局代理是 none,表示全局上不設定任何代理,需要在每個步驟中設定代理
  agent none
  stages {
    // 拉取代碼并建構
    stage('pull code and build') {
      // 此階段的代理: docker 容器
      agent {
        docker {
        image 'maven:3-alpine'
        args '-v $HOME/.m2:/root/.m2'
        // 自定義的工作空間
        customWorkspace "/opt/"
        }
      }
      steps {
        // 拉取代碼
        git(url: env.url, branch: 'master', credentialsId: 'gitlab')
        // 建構
        sh 'mvn -B clean package'
      }
    }
    // 建構鏡像
    stage("build image"){
      agent {
        node {
          label 'master'
          customWorkspace "/opt/"

        }
      }
      steps {
        script {
          docker.withRegistry('http://myharbor.shark.com:80', 'harbor') {
            docker.build('app-java/myapp').push('latest')
          }
        }
      }
    }
  }
}
           

使用憑據

Jenkins-好程式員-使用Docker建構并推送到私有倉庫一、安裝插件二、建立憑據三、編寫 Pipeline使用憑據和 Gialab 深度內建

和 Gialab 深度內建

Jenkins-好程式員-使用Docker建構并推送到私有倉庫一、安裝插件二、建立憑據三、編寫 Pipeline使用憑據和 Gialab 深度內建
Jenkins-好程式員-使用Docker建構并推送到私有倉庫一、安裝插件二、建立憑據三、編寫 Pipeline使用憑據和 Gialab 深度內建
Jenkins-好程式員-使用Docker建構并推送到私有倉庫一、安裝插件二、建立憑據三、編寫 Pipeline使用憑據和 Gialab 深度內建
Jenkins-好程式員-使用Docker建構并推送到私有倉庫一、安裝插件二、建立憑據三、編寫 Pipeline使用憑據和 Gialab 深度內建
Jenkins-好程式員-使用Docker建構并推送到私有倉庫一、安裝插件二、建立憑據三、編寫 Pipeline使用憑據和 Gialab 深度內建
Jenkins-好程式員-使用Docker建構并推送到私有倉庫一、安裝插件二、建立憑據三、編寫 Pipeline使用憑據和 Gialab 深度內建