【问题标题】:jenkins shall fail on errors during rpm install jobjenkins 将在 rpm 安装作业期间因错误而失败
【发布时间】:2016-05-12 13:32:24
【问题描述】:

我有一个在我的测试机器上执行的部署任务。目的是在同一台机器上测试 jenkins 新构建的 rpm。

因此,我在 jenkins 中设置了一个部署作业,它执行以下 shell 行:

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

为了安装 rpm,我制作了一个 jenkins 拥有专有 sudo 权限的小 shell 脚本。

#!/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 无法识别错误代码并将构建标记为成功。

有人知道如何正确解决这个问题吗? 也欢迎改进此过程的提示。

【问题讨论】:

    标签: linux bash shell jenkins


    【解决方案1】:

    简单地检查脚本中的 rpm 错误代码并自己报告给 Jenkins 怎么样?

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

    或过载:

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

    【讨论】:

    • 不幸的是它没有按预期工作...warning: %post(test-1-1.noarch) scriptlet failed, exit status 1# echo $?0
    • 出现错误后,似乎最后一个错误代码没有正确设置。好吧,在这种情况下,您可以扫描控制台消息,如果发现任何错误提示,请自行exit 1
    • 看起来像一个 rpm 问题...我想那是我必须问的另一个问题。或者你的意思是“扫描”詹金斯应该做的事情?
    • 不,你说得对,现在看来是 rpm 问题,而不是 jenkins。
    【解决方案2】:

    如果在配置中使用execute shell 步骤,如果exit code!= 0,Jenkins 会将构建标记为失败。

    如果在末尾添加exit $? 可能足以更改您的脚本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-09
      • 2020-03-15
      • 2013-07-15
      • 2018-03-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多