Jenkins
官方文檔地址:https://jenkins.io/doc/pipeline/steps/workflow-basic-steps/
概述
Jenkins的管道化插件對(duì)于其用戶來說是個(gè)改革。依賴于域領(lǐng)域語言(DSL)Groovy,管道化插件實(shí)現(xiàn)了腳本化
Groovy是一種基于JVM(Java虛擬機(jī))的敏捷開發(fā)語言,它結(jié)合了Python、Ruby和Smalltalk的許多強(qiáng)大的特性
隨著管道插件的引入,用戶現(xiàn)在可以在Jenkinsfile中實(shí)現(xiàn)一個(gè)項(xiàng)目的整個(gè)構(gòu)建/測(cè)試/部署管道,并將其存儲(chǔ)在他們的代碼旁邊,將他們的管道作為另一段代碼檢查到源代碼控制中。
這個(gè)管道插件的靈感來自于構(gòu)建流插件,但它的目標(biāo)是改進(jìn)構(gòu)建流所探索的一些概念,例如:
有能力暫停/恢復(fù)執(zhí)行工作。
檢查管道定義到源代碼控制(Jenkinsfile)
支持用額外的組織spe擴(kuò)展領(lǐng)域特定語言
Jenkins從根本上講是一種支持多種自動(dòng)化模式的自動(dòng)化引擎。Pipeline在Jenkins上添加了一套強(qiáng)大的自動(dòng)化工具,支持從簡(jiǎn)單的連續(xù)集成到全面的連續(xù)輸送Pipeline的用例。通過建模一系列相關(guān)任務(wù),用戶可以利用Pipeline 的許多功能:
代碼:Pipeline以代碼的形式實(shí)現(xiàn),通常被檢入源代碼控制,使團(tuán)隊(duì)能夠編輯,審查和迭代其傳送流程。
?耐用:Pipeline可以在計(jì)劃和計(jì)劃外重新啟動(dòng)Jenkins管理時(shí)同時(shí)存在。
Pausable:Pipeline可以選擇停止并等待人工輸入或批準(zhǔn),然后再繼續(xù)Pipeline運(yùn)行。
]多功能:Pipeline支持復(fù)雜的現(xiàn)實(shí)世界連續(xù)交付要求,包括并行分叉/連接,循環(huán)和執(zhí)行工作的能力。
可擴(kuò)展:Pipeline插件支持其DSL的自定義擴(kuò)展?以及與其他插件集成的多個(gè)選項(xiàng)。
參數(shù)/詞匯說明
Jenkinsfile的管道配置官網(wǎng)地址:https://jenkins.io/doc/pipeline/steps/workflow-basic-steps/
credentiaiId : jenkins中對(duì)應(yīng)的應(yīng)用市場(chǎng)證書
readfile :從工作區(qū)讀取文件;
writeFile:向工作區(qū)寫入文件;
retry :重復(fù)執(zhí)行最多N次
Step :一般構(gòu)建步驟;
Dir :更改當(dāng)前目錄;
Def :定義變量;
Sh : 執(zhí)行;
sed的替換命令格式:s/A/B/g 或者s#A#B#g 或者s_A_B_g
如:sh 'sed -i \'s#${gdmp_ws_name}#gdmp-ws-develop#g\'lab/mainsite/gdmp-ws-SVC.yaml'? ;把svc文件中的{gdmp_ws_name} 替換成gdmp-ws-develop;
Stage: 一個(gè)Pipeline可以劃分為若干個(gè)Stage,每個(gè)Stage代表一組操作。注意,Stage是一個(gè)邏輯分組的概念,可以跨多個(gè)Node。
Node:一個(gè)Node就是一個(gè)Jenkins節(jié)點(diǎn),或者是Master,或者是Agent,是執(zhí)行Step的具體運(yùn)行期環(huán)境。
Step:
Step是最基本的操作單元,小到創(chuàng)建一個(gè)目錄,大到構(gòu)建一個(gè)Docker鏡像,由各類Jenkins Plugin提供。
Jenkinsfile:
Pipeline的定義文件,由Stage,Node,Step組成,一般存放于代碼庫(kù)根目錄下。
執(zhí)行步驟(參考jenkins的控制臺(tái)進(jìn)行進(jìn)行說明)
Pipeline
Pipeline的視覺展現(xiàn)

Pipeline例子:

1.在任何可用的代理上執(zhí)行此管道或其任何階段。
2.定義了“構(gòu)建”階段。
3.執(zhí)行與“構(gòu)建”階段相關(guān)的一些步驟。
4.定義了“測(cè)試”階段。
5.執(zhí)行與“測(cè)試”階段相關(guān)的一些步驟。
6.定義了“部署”階段。
7.執(zhí)行與“部署”階段相關(guān)的一些步驟。
1.pipeline?是聲明式的管道特有的語法,它定義了一個(gè)“塊”,其中包含了執(zhí)行整個(gè)管道的所有內(nèi)容和指令。
2.agent?是聲明式的管道專用語法,它指示Jenkins分配一個(gè)遺囑執(zhí)行人(在一個(gè)節(jié)點(diǎn)上)和整個(gè)管道的工作區(qū)。
3.stage?是描述這條管道的一個(gè)階段的語法塊。
4.steps?是聲明式的管道特定的語法,它描述了在這個(gè)階段將要運(yùn)行的步驟。
5.sh?是一個(gè)管道步驟(由管道提供的:節(jié)點(diǎn)和進(jìn)程插件)執(zhí)行給定的shell命令。
6.junit?是另一個(gè)管道步驟(由JUnit插件提供)用于聚合測(cè)試報(bào)告。
node?是腳本化的管道專用語法,它指示Jenkins在任何可用的代理/節(jié)點(diǎn)上執(zhí)行此管道。(以及其中包含的任何階段)。這實(shí)際上相當(dāng)于聲明式管道特定語法中的代理。
一. Step:
單一任務(wù),從基礎(chǔ)中告訴了Jenkins應(yīng)該怎么做。例如,要執(zhí)行shell命令,請(qǐng)make使用以下sh步驟:sh
'make'。當(dāng)插件擴(kuò)展Pipeline DSL時(shí),通常意味著插件已經(jīng)實(shí)現(xiàn)了一個(gè)新的步驟。
二. Node:
Pipeline執(zhí)行中的大部分工作都是在一個(gè)或多個(gè)聲明node步驟的上下文中完成的。將工作限制在Node步驟中有兩件事情:
通過將項(xiàng)目添加到Jenkins隊(duì)列來調(diào)度要運(yùn)行的塊中包含的步驟。一旦執(zhí)行器在節(jié)點(diǎn)上空閑,步驟就會(huì)運(yùn)行。
創(chuàng)建工作區(qū)(特定于該特定Pipeline的目錄),可以從源代碼控制中檢出的文件完成工作。
根據(jù)您的Jenkins配置,某些工作空間在一段時(shí)間不活動(dòng)后可能無法自動(dòng)清除。
三.Stage:
stage是定義整個(gè)Pipeline的概念上不同子集的一個(gè)步驟,例如:“Build”,“Test”和“Deploy”,許多插件用于可視化或呈現(xiàn)Jenkins Pipeline狀態(tài)/進(jìn)度。
且Pipeline Stage View插件可以將管道中的一個(gè)個(gè)段進(jìn)行可視化: