rpm scriptlet错误在安装期间未发送正确的退出代码

时间:2016-05-13 11:48:26

标签: jenkins rpm rpmbuild

我让jenkins使用在安装期间执行多个任务的安装后scriptlet构建rpm。 其中一个可能会失败并发送错误,如

warning: %post(test-1-1.noarch) scriptlet failed, exit status 1

不幸的是,这似乎没有从rpm调用中获得正确的退出状态。

# echo $? 
0

实际上我需要rpm安装发送退出状态> 0

我缺少一些隐藏的rpm选项,或者我的scriptlet中是否缺少某些内容?

这就是我的scriptlet的样子(通过jenkins使用变量<%= installPath%>,<%= webUser%>在创建期间插入)来创建包管理器

#!/usr/bin/env bash

INSTALLPATH=<%= installPath %>
WEBUSER=<%= webUser %>
HTTPDUSER=`ps axo user,comm | grep -E '[a]pache|[h]ttpd|[_]www|[w]ww-data|[n]ginx' | grep -v root | head -1 | cut -d\  -f1`

mkdir -p $INSTALLPATH/app/cache
setfacl -R -m u:"$HTTPDUSER":rwX -m u:"$WEBUSER":rwX $INSTALLPATH/app/cache
setfacl -dR -m u:"$HTTPDUSER":rwX -m u:"$WEBUSER":rwX $INSTALLPATH/app/cache

mkdir -p $INSTALLPATH/app/logs
setfacl -R -m u:"$HTTPDUSER":rwX -m u:"$WEBUSER":rwX $INSTALLPATH/app/logs
setfacl -dR -m u:"$HTTPDUSER":rwX -m u:"$WEBUSER":rwX $INSTALLPATH/app/logs

mkdir -p $INSTALLPATH/web/cache
setfacl -R -m u:"$HTTPDUSER":rwX -m u:"$WEBUSER":rwX $INSTALLPATH/web/cache
setfacl -dR -m u:"$HTTPDUSER":rwX -m u:"$WEBUSER":rwX $INSTALLPATH/web/cache

sudo su $WEBUSER -c "php $INSTALLPATH/vendor/sensio/distribution-bundle/Resources/bin/build_bootstrap.php"
sudo su $WEBUSER -c "php $INSTALLPATH/app/console cache:warmup"

sudo su $WEBUSER -c "php $INSTALLPATH/app/console assets:install $INSTALLPATH/web"

sudo su $WEBUSER -c "php $INSTALLPATH/app/console doctrine:database:drop --if-exists --no-interaction --force"
sudo su $WEBUSER -c "php $INSTALLPATH/app/console doctrine:database:create --if-not-exists"
sudo su $WEBUSER -c "php $INSTALLPATH/app/console doctrine:schema:create"

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
err_code=$?

if [[ err_code > 0 ]]; then exit 1; fi

欢迎任何建议。

(这个问题是jenkins shall fail on errors during rpm install job

的后续问题

1 个答案:

答案 0 :(得分:1)

几年前,rpm(来自@ rpm.org,而不是来自@ rpm5.org)选择将来自%post的错误视为非致命错误(即退出代码为零)。我没有注意到重新启用选项。那么你可以检测警告:消息,而不是检查退出代码。