jenkins插件Pipeline腳本jenkinsfile操作指南

前言
jenkins是一款流行的開源持續(xù)集成軟件,插件豐富,擴展靈活。2.0后推出pipeline流式構(gòu)建,支持構(gòu)建任務(wù)腳本化。本文主要旨在使用jenkins 的pipeline功能完成java maven項目的打包,上傳jar到目標(biāo)服務(wù)器。pipeline推出時間不長,實際使用的不是很多,網(wǎng)上基本沒啥參考資料,官方的文檔很詳細(xì),但不成本文所述體系。這篇博文是博主摸索半天后的成果,如有錯落,歡迎指出。
說明:本文環(huán)境默認(rèn)包含組件:jenkins,maven,jdk
一,安裝pipeline支持插件
到配置中心插件管理搜索如下插件,安裝
Pipeline Maven Integration Plugin :執(zhí)行withMaven方法支持,用于構(gòu)建maven項目工程,使用方式如下圖,詳細(xì)說明見:https://wiki.jenkins.io/display/JENKINS/Pipeline+Maven+Plugin

SSH Agent Plugin :sshagent方法支持,用于上傳構(gòu)建產(chǎn)物到目標(biāo)服務(wù)器,使用詳情見:
https://wiki.jenkins.io/display/JENKINS/SSH+Agent+Plugin,這邊博主實操時有個大坑,后面說詳細(xì)說明
二,創(chuàng)建流式Item
如圖

三,編寫pipeline腳本
腳本分三個步驟塊,分別是git clone(下載源碼到本地),build(構(gòu)建工程),deploy(上傳構(gòu)建產(chǎn)物到目標(biāo)主機)
腳本如下:
node {
stage('git clone') { // for display purposes
checkout([$class: 'GitSCM', branches: [[name: '*/${branch}']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'xxxx-xxxx-xxxxx-xxxxxx', url: 'http://git.xx.xxx/xxx/xform-boot.git']]])
}
stage('Build') {
env.JAVA_HOME="${tool 'jdk1.8.0_92'}"
withMaven(
maven: 'M3',
mavenLocalRepo: '.repository') {
sh "mvn clean install -U -P${profile} -Dmaven.test.skip=true"
}
}
stage('deploy') {
sshagent(credentials: ['deploy_ssh_key']) {
sh 'ssh root@120.xx.95.105'
sh 'echo hello'
sh 'scp producer/target/salesApp-1.0-RELEASES.jar root@120.xx.95.105:/root/deploy/'
}
}
}如上腳本需要配置兩個認(rèn)證憑證,分別是git的credentialsId和sshagent的credentials,到配置管理credentials處添加,如圖

git的認(rèn)證比較簡單,使用密碼用戶名驗證,直接選Username with password就好了,這里還有個技巧,后面會講到。
sshagen測試下來只支持私鑰,需要選擇如下配置:

如圖,使用了From the Jenkins master ~./ssh,需要你到j(luò)enkins所在主機的.ssh目錄,通過命令”ssh-keygen -t rsa“生成公私鑰,生成時會詢問你是否使用密碼 加密,可以直接跳過,如果寫了密碼,那么上圖中Passphrase需要寫上加密密碼,沒寫就留空。然后將id_rsa.pub中的內(nèi)容拷貝到目標(biāo)主機的/root/.ssh/authorized_keys文件中。上圖中的ID可以指定,不指定會生成一個唯一字符串如:

這個ID對應(yīng)了pipeline腳本中的驗證ID,到此,我們準(zhǔn)備工作都已經(jīng)做完了。
添加運行參數(shù)
細(xì)心的你可能發(fā)現(xiàn)了腳本中有類似占位符。這些的代碼,如${branch},${profile},其實就是pipeline的占位符,這些參數(shù)控制了git從哪個分支拉代碼,maven構(gòu)建的哪個環(huán)境的代碼,這些參數(shù)需要在構(gòu)建任務(wù)中明確指定,用以區(qū)分是生產(chǎn)環(huán)境還是測試環(huán)境等,如圖

四,嘗試構(gòu)建任務(wù)
到這里我們的準(zhǔn)備工作都已完成了,可以開啟構(gòu)建任務(wù)測試了,這時博主走了一個好大的坑,無論認(rèn)證憑證模塊怎么配置,總是拋如下的異常:Host key verification failed.

這個異常非常明顯,pipeline流式構(gòu)建前兩個步驟已經(jīng)成功了,代碼拉下來并已經(jīng)構(gòu)建成功了。但是通過sshagent上傳到目標(biāo)服務(wù)器時,認(rèn)證失敗了。這個問題占了我們摸索過程的一大半時間。最后還是感謝唐老大發(fā)現(xiàn)了問題。
異常原因:生產(chǎn)公私鑰使用的root用戶生產(chǎn)的,jenkins是使用jenkins用戶啟動的,所有jenkins沒有權(quán)限,
其實上面所有的步驟都沒問題。最終在嘗試了無數(shù)次的構(gòu)建失敗后構(gòu)建圖標(biāo)終于綠了,構(gòu)建產(chǎn)物成功上傳到目標(biāo)主機
一次次的失?。?/p>

成功的綠標(biāo)


五,pipeline的一點技巧
流式項目Item創(chuàng)建好后,在左邊菜單最下面會有pipeline的語法菜單,點進去,會有如下頁面:

1.其中箭頭一所指的,就是前文提到的git添加認(rèn)證的一個小技巧,這個是一個pipeline腳本生成器,選中g(shù)it scm后會出來git相關(guān)的配置,按照提示添加后,點擊生成,就會生成以及配置組裝好的腳本。特別適合新手
2.箭頭而是步驟指南,這個里面羅列了所有pipeline語法支持的一些DSL函數(shù),如git,checkout,wthMaven等,并且詳細(xì)的描述了方法的具體使用細(xì)節(jié),詳細(xì) 到每個參數(shù)的說明,如withMavene:

文末結(jié)語
pipeline的概念去年就聽說了,現(xiàn)在實際操作了一把,還是非常的震撼,通過在項目中新增jenkinsfile就可以解決構(gòu)建問題,而且非常靈活,支持寫if等的邏輯判斷腳本來決定構(gòu)建行為。經(jīng)歷了無數(shù)次失敗后成功的成就感不言而喻,有興趣的都可以試試,徹底改變原先的構(gòu)建模式。建議剛接觸pipeline的新手,多看看pipeline語法頁面的相關(guān)內(nèi)容,對理解pipeline語法及書寫腳本有很大的幫助。其次就是去相關(guān)的插件wiki頁面多看看說明。國內(nèi)的那些博客很多都是一筆帶過,看不出在生產(chǎn)上面應(yīng)用的痕跡,不建議去參考
以上就是jenkins插件Pipeline腳本jenkinsfile操作指南的詳細(xì)內(nèi)容,更多關(guān)于jenkins插件Pipeline腳本jenkinsfile操作的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
win10遇到服務(wù)器啟動失敗 80端口被占用如何解決
這篇文章主要為大家詳細(xì)介紹了win10遇到服務(wù)器啟動失敗,80端口被占用的解決方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-03-03
集群運維自動化工具ansible之使用playbook安裝zabbix客戶端
Zabbix客戶端的安裝配置:Zabbix是一個基于WEB界面的提供分布式系統(tǒng)監(jiān)視以及網(wǎng)絡(luò)監(jiān)視功能的企業(yè)級的開源解決方案。zabbix能監(jiān)視各種網(wǎng)絡(luò)參數(shù),保證服務(wù)器系統(tǒng)的安全運營;本文講述的是使用playbook安裝zabbix客戶端。2014-07-07
jenkins插件Pipeline腳本jenkinsfile操作指南
這篇文章主要為大家介紹了jenkins插件Pipeline腳本jenkinsfile的操作使用指南,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步2022-03-03
jenkins 配置用戶角色權(quán)限的實現(xiàn)方法
這篇文章主要介紹了jenkins 配置用戶角色權(quán)限的實現(xiàn)方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-05-05

