一、什么是pipeline
什么是Pipeline?簡(jiǎn)單來說,就是一套運(yùn)行于Jenkins上的工作流框架,將原本獨(dú)立運(yùn)行于單個(gè)或者多個(gè)節(jié)點(diǎn)的任務(wù)連接起來,實(shí)現(xiàn)單個(gè)任務(wù)難以完成的復(fù)雜發(fā)布流程(實(shí)用場(chǎng)景:將多個(gè)Jenkins構(gòu)建任務(wù)輕松集成)。
??簡(jiǎn)而言之,就是一套工作流框架,將原本獨(dú)立運(yùn)行于單個(gè)或者多個(gè)節(jié)點(diǎn)的任務(wù)連接起來,實(shí)現(xiàn)單個(gè)任務(wù)難以完成的復(fù)雜流程編排與可視化。
??目前比較流行的pipeline實(shí)踐方式如下。
- gitlabrunner:?是gitlab內(nèi)置的一套pipeline框架,腳本是yml語(yǔ)言。
- jenkins:?通過安裝插件的形式實(shí)現(xiàn),腳本語(yǔ)言是jenkinsfile。
Pipeline的實(shí)現(xiàn)方式是一套Groovy DSL,任何發(fā)布流程都可以表述為一段Groovy腳本,并且Jenkins支持從代碼庫(kù)直接讀取腳本,從而實(shí)現(xiàn)了Pipeline as Code的理念。
- Jenkinsfile:是 Jenkins Pipeline 的配置文件,包含了流水線執(zhí)行的各種操作。
使用條件
要使用Jenkins Pipeline,需要: Jenkins 2.x或更高版本、Pipeline插件
使用語(yǔ)言
Pipeline腳本是用Groovy寫的 。
二、pipeline在哪
首先確保Jenkins上已經(jīng)有pipeline相關(guān)插件。如果想在Jenkins上新建一個(gè)pipeline Job,按照下列步驟操作:
1、單擊Jenkins主頁(yè)上的New Item。
2、輸入Pipeline的名稱,選擇Pipeline,然后單擊確定。
3、最后點(diǎn)擊完成,一個(gè)pipeline項(xiàng)目就生成了
三、一個(gè)簡(jiǎn)單的pipeline腳本
pipeline項(xiàng)目中實(shí)際起作用的就是pipeline 腳本部分,這里寫一個(gè)HelloWorld,編輯后點(diǎn)擊保存,期望執(zhí)行打印hello world操作。
由于這個(gè)腳本是無參數(shù)的,所以直接點(diǎn)擊Build Now就可以了,來查看一下構(gòu)建結(jié)果,
可以看到最后輸出了期望的 Hello world!
這里對(duì)語(yǔ)法進(jìn)行簡(jiǎn)單介紹
Example
stages
pipeline {
agent any
stages {
stage('Example') {
steps {
echo 'Hello World'
}
}
}
}
復(fù)制
agent
在任何可用的agent 上執(zhí)行Pipeline或stage。例如:agent any
還有其他的agent后面可跟的參數(shù),例如:none,label,node,docker
none
當(dāng)在pipeline塊的頂層使用none時(shí),將不會(huì)為整個(gè)Pipeline運(yùn)行分配全局agent ,每個(gè)stage部分將需要包含其自己的agent部分。
label
使用提供的label標(biāo)簽,在Jenkins環(huán)境中可用的代理上執(zhí)行Pipeline或stage。例如:agent { label 'my-defined-label' }
node
agent { node { label 'labelName' } },等同于 agent { label 'labelName' },但node允許其他選項(xiàng)(如customWorkspace)。
docker
定義此參數(shù)時(shí),執(zhí)行Pipeline或stage時(shí)會(huì)動(dòng)態(tài)供應(yīng)一個(gè)docker節(jié)點(diǎn)去接受Docker-based的Pipelines。docker還可以接受一個(gè)args,直接傳遞給docker run調(diào)用。例如:agent { docker 'maven:3-alpine' }
stages
包含一個(gè)或多個(gè)stage的序列,Pipeline的大部分工作在此執(zhí)行。建議stages至少包含至少一個(gè)stage指令,用于連接各個(gè)交付過程,如構(gòu)建,測(cè)試和部署等。
steps
steps包含一個(gè)或多個(gè)在stage塊中執(zhí)行的step序列。
總結(jié):
1、Pipeline最基本的部分是“step”。基本上,step告訴Jenkins 要做什么,并且作為Declarative Pipeline和Scripted Pipeline語(yǔ)法的基本構(gòu)建塊。
2、Pipeline支持兩種語(yǔ)法:Declarative Pipeline(在Pipeline 2.5中引入,結(jié)構(gòu)化方式)和Scripted Pipeline,兩者都支持建立連續(xù)輸送的Pipeline。
3、所有有效的Declarative Pipeline必須包含在一個(gè)pipeline塊內(nèi),例如:
pipeline { /* insert Declarative Pipeline here */ }
4、Declarative Pipeline中的基本語(yǔ)句和表達(dá)式遵循與Groovy語(yǔ)法相同的規(guī)則 ,但有以下例外:
a.Pipeline的頂層必須是塊,具體來說是:pipeline { }
b.沒有分號(hào)作為語(yǔ)句分隔符。每個(gè)聲明必須在自己的一行
c.塊只能包含Sections, Directives, Steps或賦值語(yǔ)句。
四、pipeline實(shí)際實(shí)用意義
前文說了Pipeline是將原本獨(dú)立運(yùn)行于單個(gè)或者多個(gè)節(jié)點(diǎn)的任務(wù)連接起來
文章來源:http://www.zghlxwxcb.cn/news/detail-486036.html
https://www.cnblogs.com/mq0036/p/16146065.html文章來源地址http://www.zghlxwxcb.cn/news/detail-486036.html
到了這里,關(guān)于Jenkins ——pipeline入門教程的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!