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

調用java或者python腳本
本質上就是通過sh來運行py或者java腳本,我們以運行python腳本為例,代碼如下:
1.執行腳本yourscript.py
- sh" /usr/bin/python yourscript.py"
2.執行腳本yourscript.py,并傳入參數param
- sh"/usr/bin/python yourscript.py param"
3.pipeline中獲取shell命令的標準輸出方法如下:
舉例:執行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()
執行代碼后,test就會賦值給變量str。





























