Jenkins Pipeline調(diào)用Shell、Python、Java腳本的正確使用姿勢(shì)
在設(shè)計(jì)Pipeline腳本的過程中,經(jīng)常會(huì)遇到調(diào)用外部腳本來配合實(shí)現(xiàn)某些功能的場(chǎng)景。例如在服務(wù)器上執(zhí)行shell命令、運(yùn)行python或者java測(cè)試代碼以及使用groovy腳本來實(shí)現(xiàn)一些更為復(fù)雜的功能等等。下面我就會(huì)針對(duì)這三種最常用的腳本使用場(chǎng)景進(jìn)行詳細(xì)說明!
執(zhí)行shell命令
1.使用 sh "
例如:進(jìn)入某個(gè)目錄
- sh "cd myfile"
2.多條shell命令的組合使用,需要使用;進(jìn)行連接
例如:進(jìn)入某個(gè)目錄,然后刪除目錄中的所有文件
- sh "cd myfile;rm -rf *.*"
3.執(zhí)行shell命令并獲取其返回值
- result = sh(script: "", returnStdout: true).trim()
例如:在jenkins的當(dāng)前目錄中查找是否有pom.xml文件
- def exitValue = sh(script: "find ${WORKSPACE} -name pom.xml", returnStdout: true).trim()
- if (exitValue.empty){
- //沒有找到,進(jìn)行邏輯處理
- }
使用groovy 腳本
有一個(gè)需求,從配置文件中讀取url信息,我們可以通過groovy腳本實(shí)現(xiàn),具體代碼實(shí)現(xiàn)如下:
- file = new File(filePath)
- urls = file.readLines()
注意,需要把File 和readLines加入到j(luò)enkins的Script Approval中(首次運(yùn)行,會(huì)提示是否加入),加入后在Dashboard>ScriptApproval頁面可以看到相關(guān)結(jié)果,如下圖所示:

調(diào)用java或者python腳本
本質(zhì)上就是通過sh來運(yùn)行py或者java腳本,我們以運(yùn)行python腳本為例,代碼如下:
1.執(zhí)行腳本yourscript.py
- sh" /usr/bin/python yourscript.py"
2.執(zhí)行腳本yourscript.py,并傳入?yún)?shù)param
- sh"/usr/bin/python yourscript.py param"
3.pipeline中獲取shell命令的標(biāo)準(zhǔn)輸出方法如下:
舉例:執(zhí)行python 腳本獲取其返回值
定義pyscript.py代碼如下,目的是輸出test
- def func1():
- print "test"
- func1()
我們可以用下面的方法獲取輸出的test的值
- def str = sh(script:"/usr/bin/python /opt/scripts/test/pyscript.py", returnStdout:true).trim()
執(zhí)行代碼后,test就會(huì)賦值給變量str。