2016-05-12 84 views
0

我有一個在我的測試機器上執行的部署任務。目的是在同一臺機器上測試jenkins新建的rpm。在rpm安裝作業期間,jenkins在出錯時會失敗

所以我成立了一個詹金斯部署工作,執行以下外殼線條:

artifact=$(ls build/*.rpm | head -1) 
sudo /usr/local/sbin/jenkins-rpm-install $artifact 
rm -rf build/ 

要安裝我提出,詹金斯有獨家須藤權限小的shell腳本的rpm。

#!/bin/sh 
# 
# allows jenkins to install rpm as privileged user 
# 
# add the following line to /etc/sudoers: 
# jenkins ALL = NOPASSWD: /usr/local/sbin/jenkins-rpm-install 
# 

artifact=$1 

rpm -vv --install --force $artifact 

現在我有這個問題:每當RPM安裝失敗詹金斯不承認錯誤代碼,標誌着構建爲成功。

有沒有人有一個想法如何妥善解決這個問題? 也歡迎提供改進此過程的提示。

回答

1

那麼簡單地檢查腳本中rpm錯誤的代碼並將它報告給Jenkins自己呢?

rpm -vv --install --force $artifact 
error_code=$? 
if [[ err_code > 0 ]]; then exit $?; fi 

或者具有過載:

rpm -vv --install --force $artifact || exit $? 
+0

看起來很有希望。謝謝 – kitingChris

+0

不幸的是它不能正常工作...... '警告:%post(test-1-1.noarch)scriptlet failed,exit status 1' '#echo $?' '0' – kitingChris

+0

看來錯誤發生後,錯誤代碼沒有正確設置。那麼,在這種情況下,您可以掃描控制檯消息,並且如果您發現任何錯誤提及,請自行退出1。 – Martin

1

如果配置中使用的是execute shell步詹金斯將標誌着建設爲失敗,如果exit code = 0

如果可能足以通過在末尾添加exit $?來更改腳本。