rpm scriptlet 错误在安装期间未发送正确的退出代码
rpm scriptlet error does not send proper exit code during install
我让 jenkins 使用 post-install scriptlet 构建 rpm,这些脚本在安装过程中执行多项任务。
其中之一可能会失败并发送类似
的错误
warning: %post(test-1-1.noarch) scriptlet failed, exit status 1
不幸的是,这似乎不会导致 rpm 调用的正确退出状态。
# echo $?
0
实际上我需要 rpm 安装发送退出状态 >0
我是否缺少某些隐藏的 rpm 选项,或者我的 scriptlet 中是否缺少某些内容?
这就是我的 scriptlet 的样子(由 effing 包管理器通过 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=
rpm -vv --install --force $artifact
err_code=$?
if [[ err_code > 0 ]]; then exit 1; fi
欢迎任何建议。
(此问题是 的后续问题)
rpm(来自@rpm.org,而不是来自@rpm5.org)选择将来自 %post 的错误视为非致命错误(即退出代码为零)很多年了前。据我所知,没有重新启用选项。那么你可以检测警告:消息而不是检查退出代码。
我让 jenkins 使用 post-install scriptlet 构建 rpm,这些脚本在安装过程中执行多项任务。 其中之一可能会失败并发送类似
的错误warning: %post(test-1-1.noarch) scriptlet failed, exit status 1
不幸的是,这似乎不会导致 rpm 调用的正确退出状态。
# echo $?
0
实际上我需要 rpm 安装发送退出状态 >0
我是否缺少某些隐藏的 rpm 选项,或者我的 scriptlet 中是否缺少某些内容?
这就是我的 scriptlet 的样子(由 effing 包管理器通过 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=
rpm -vv --install --force $artifact
err_code=$?
if [[ err_code > 0 ]]; then exit 1; fi
欢迎任何建议。
(此问题是
rpm(来自@rpm.org,而不是来自@rpm5.org)选择将来自 %post 的错误视为非致命错误(即退出代码为零)很多年了前。据我所知,没有重新启用选项。那么你可以检测警告:消息而不是检查退出代码。