Pipeline簡介</DI< div>
1)概念
Pipeline,簡單來說,就是一套運行在 Jenkins 上的工作流框架,將原來獨立運行於單個或者多個節點
的任務連接起來,實現單個任務難以完成的復雜流程編排和可視化的工作。 </DI< div>
2)使用Pipeline有以下好處(來自翻譯自官方文檔):
代碼:Pipeline以代碼的形式實現,通常被檢入源代碼控制,使團隊能夠編輯,審查和迭代其傳送流
程。 持久:無論是計划內的還是計划外的服務器重啟,Pipeline都是可恢復的。 可停止:Pipeline可接
收交互式輸入,以確定是否繼續執行Pipeline。 多功能:Pipeline支持現實世界中復雜的持續交付要
求。它支持fork/join、循環執行,並行執行任務的功能。 可擴展:Pipeline插件支持其DSL的自定義擴
展 ,以及與其他插件集成的多個選項。 </DI< div>
安裝Pipeline插件
Manage Jenkins->Manage Plugins->可選插件</DI< div>
安裝插件后,創建項目的時候多了“流水線”類型</DI< div>
Pipeline語法快速入門 </DI< div>
創建項目 </DI< div>
流水線->選擇HelloWorld模板</DI< div>
生成內容如下:
pipeline {
agent any
stages {
stage('Hello') {
steps {
echo 'Hello World'
}
}
}
}
stages:代表整個流水線的所有執行階段。通常stages只有1個,里面包含多個stage
stage:代表流水線中的某個階段,可能出現n個。一般分為拉取代碼,編譯構建,部署等階段.
steps:代表一個階段內需要執行的邏輯。steps里面是shell腳本,git拉取代碼,ssh遠程發布等任意內
容。
編寫一個簡單聲明式Pipeline:
pipeline {
agent any
stages {
stage('拉取代碼') {
steps {
echo '拉取代碼'
}
}
stage('編譯構建') {
steps {
echo '編譯構建'
}
}
stage('項目部署') {
steps {
echo '項目部署'
}
}
}
}
點擊構建,可以看到整個構建過程</DI< div>
2)Scripted Pipeline腳本式-Pipeline
創建項目
這次選擇"Scripted Pipeline</DI< div>
node {
def mvnHome
stage('Preparation') { // for display purposes
}
stage('Build') {
}
stage('Results') {
}
}
Node:節點,一個 Node 就是一個 Jenkins 節點,Master 或者 Agent,是執行 Step 的具體運行
環境,后續講到Jenkins的Master-Slave架構的時候用到。
Stage:階段,一個 Pipeline 可以划分為若干個 Stage,每個 Stage 代表一組操作,比如:
Build、Test、Deploy,Stage 是一個邏輯分組的概念。
Step:步驟,Step 是最基本的操作單元,可以是打印一句話,也可以是構建一個 Docker 鏡像,
由各類 Jenkins 插件提供,比如命令:sh ‘make’,就相當於我們平時 shell 終端中執行 make 命令
一樣。
編寫一個簡單的腳本式Pipeline
node {
def mvnHome
stage('拉取代碼') { // for display purposes
echo '拉取代碼'
}
stage('編譯構建') {
echo '編譯構建'
}
stage('項目部署') {
echo '項目部署'
}
}
構建結果和聲明式一樣!
流水線聲明式腳本操作---------------------------------------------------------------------
拉取代碼 (都是靠魔板生成代碼的模式)
生成git 代碼,打開 流水線語法
編譯打包
或者 直接sh 后面加上要執行的腳本或命令
部署
假如代碼需要同時部署到多台的tomcat,選擇添加多台。如下圖
Pipeline Script from SCM--------------------------------------(調用腳本方式)
剛才我們都是直接在Jenkins的UI界面編寫Pipeline代碼,這樣不方便腳本維護,建議把Pipeline腳本放
在項目中(一起進行版本控制)
1)在項目根目錄建立Jenkinsfifile文件,把內容復制到該文件中</DI< div>
把Jenkinsfifile上傳到Gitlab
2)在項目中引用該文件