我有一个在我的测试机器上执行的部署任务。目的是在同一台机器上测试jenkins的新建rpm。
因此,我在jenkins中设置了一个部署作业,执行以下shell行:
artifact=$(ls build/*.rpm | head -1)
sudo /usr/local/sbin/jenkins-rpm-install $artifact
rm -rf build/
要安装rpm,我制作了一个小的shell脚本,jenkins拥有独有的sudo权限。
#!/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安装失败时,jenkins都无法识别错误代码并将构建标记为成功。
有谁知道如何正确解决这个问题? 此外,欢迎提供改进此流程的提示。
答案 0 :(得分:1)
如何简单地检查脚本中的rpm错误代码并自己向Jenkins报告?
rpm -vv --install --force $artifact
error_code=$?
if [[ err_code > 0 ]]; then exit $?; fi
或过载:
rpm -vv --install --force $artifact || exit $?
答案 1 :(得分:1)
如果在使用execute shell
步骤的配置中,如果exit code
!= 0
,Jenkins会将构建标记为失败。
如果可能足以通过在末尾添加exit $?
来更改脚本。