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

Pipeline例子:

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