一、安裝插件
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伺服器上映像部署的曆史記錄。
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNfRHLGZkRGZkRfJ3bs92YsYTMfVmepNHL4tGRNRTUq5UeJpHW4Z0MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnLwUjN0IzMwMTM1ATNwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
二、建立憑據
這裡是直接安裝生産環境來作為背景做練習,企業中往往會使用私用鏡像倉庫 Harbor。
在這裡需要建立連接配接到 Harbor 倉庫的憑據,就是使用者名和密碼。
三、編寫 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')
}
}
}
}
}
}