1. Pipeline 概述
Pipeline 即流水線,是 jenkins2.X 的新特性,是 jenkins 官方推薦使用的持續整合方案。與傳統的自由風格專案不同,它是通過 jenkins DSL 編寫程式碼來實現。相比於之前使用者只能通過 Web 介面進行配置的方式來定義 Jenkins 任務,現在通過使用 jenkins DSL 和 Groovy 語言編寫程式,使用者可以定義流水線並執行各種任務。
Jenkins pipeline包含兩類元素,分別是stages和steps。如圖:
-
step 代表單一的操作;告訴 Jenkins 做什麼。比如,程式碼從倉庫檢出程式碼,執行指令碼
-
stage 等於一系列 step 的組合,通常來表示 Jenkins pipeline 程式的可示化。例如,Build、Test、Deploy等
更詳細的資料請檢視官網
https://www.jenkins.io/doc/book/pipeline/
Pipeline 有兩種語法,分別是宣告式和指令碼式
宣告式語法
pipeline {
agent any
stages {
stage('Build') {
steps {
// TODO
}
}
stage('Test') {
steps {
// TODO
}
}
stage('Deploy') {
steps {
// TODO
}
}
}
}
agent any:表示任意一個可用代理節點上執行該Pipeline
stage('Build'):定義階段
steps {}:階段執行的步驟
指令碼式語法
node {
stage('Build') {
// TODO
}
stage('Test') {
// TODO
}
stage('Deploy') {
// TODO
}
}
node:表示任意一個可用代理節點上執行該Pipeline
stage('Build') {}:定義階段。在指令碼式語法中 stage 程式碼塊是可選的;不過明確寫上的話可以讓每個階段的任務更清晰
3. 安裝 Jenkins Pipeline 外掛
安裝 Pipeline 和 Pipeline Maven Integration 外掛
Manage Jenkins -> Manage Plugins
安裝後,重啟 Tomcat。
3. 流水線編譯與部署
建立流水線任務
新建Item
配置流水線任務
初學者對於 Pipeline 的指令碼肯定無從入手的;但是 Pipeline 提供了一個非常有用的幫助文件。
http://127.0.0.1:8080/jenkins/job/Pipeline_maven/pipeline-syntax/
Pipeline 指令碼有兩種編寫模式
-
Pipeline 指令碼
-
Jenkinsfile 檔案
這裡選擇 Pipeline script
3.1 克隆程式碼
git credentialsId: 'c8eea0cc-24e7-4eb1-a2dd-42fc1066f35a', url: 'https://gitee.com/hjj520/ruoyi-patrol.git'
3.2 編譯
bat 'mvn clean install'
在 Windows 作業系統 Jenkins Pipeline 中要使用bat來執行 Windows 命令;而 Linux 作業系統則需要使用sh來執行 Shell 命令。
3.3 上傳 jar包
bat 'C:/jenkins/pscp.exe -r -l root -pw root %WORKSPACE%/ruoyi-admin/target/ruoyi-admin.jar 192.168.10.8:/home/huangjinjin/software/springdocker'
圖片
完整 Pipeline 指令碼
pipeline {
agent any
stages {
stage('git clone') {
steps {
git credentialsId: 'c8eea0cc-24e7-4eb1-a2dd-42fc1066f35a', url: 'https://gitee.com/hjj520/ruoyi-patrol.git'
}
}
stage('complie') {
steps {
bat 'mvn clean install'
}
}
stage('upload') {
steps {
bat 'C:/jenkins/pscp.exe -r -l root -pw root %WORKSPACE%/ruoyi-admin/target/ruoyi-admin.jar 192.168.10.8:/home/huangjinjin/software/springdocker'
}
}
}
}
其他步驟可以自行新增,例如,測試、部署等。