jenkinsfile腳本文件制作(devops集成)

Jenkins

官方文檔地址:https://jenkins.io/doc/pipeline/steps/workflow-basic-steps/

概述

Jenkins的管道化插件對(duì)于其用戶來說是個(gè)改革。依賴于域領(lǐng)域語言(DSL)Groovy,管道化插件實(shí)現(xiàn)了腳本化

Groovy是一種基于JVMJava虛擬機(jī))的敏捷開發(fā)語言,它結(jié)合了Python、RubySmalltalk的許多強(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)行可視化:

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容