jenkins - 在 shell 中访问 groovy 变量并对它们执行算术运算
问题描述
我想通过访问变量并修改它来执行算术运算。
它给出错误作为错误替换
env.SUCCESSFUL_DEPLOY=$((${env.SUCCESSFUL_DEPLOY} + 1))
任何人都可以建议如何使它工作
stages {
stage('my stage') {
steps {
script {
ansiColor('xterm') {
echo ""
}
try {
env.SUCCESSFUL_DEPLOY = 0
for (int i = 0; i < 3; i++) {
sh '''
echo "Hello"
if [ $? -eq 0 ] ; then
env.SUCCESSFUL_DEPLOY=$((${env.SUCCESSFUL_DEPLOY} + 1))
fi
'''
mymethod(env.AUTH_URL)
}
echo "Total successful deploys are :${env.SUCCESSFUL_DEPLOY} out of 3 deploys"
}
catch (err) {
echo $err
}
}
}
}
}
编辑1:根据使用的建议
try {
env.SUCCESSFUL_DEPLOY = 0
for (int i = 0; i < 3; i++) {
sh """
echo 'Hello'
if [ $? -eq 0 ] ; then
env.SUCCESSFUL_DEPLOY=${ env.SUCCESSFUL_DEPLOY + 1 }
fi
"""
}
echo "Total successful deploys are :${env.SUCCESSFUL_DEPLOY} out of 3 deploys"
}
但它仍然无法正常工作
解决方案
那是因为你用的$
太多了。这应该有效。
env.SUCCESSFUL_DEPLOY=${ env.SUCCESSFUL_DEPLOY + 1 }
除了字符串插值,我注意到您正在使用它$?
来找出最后一个退出代码。您是否知道您可以使用returnStatus: true
它来接收sh
函数的退出代码?
编辑:我刚刚注意到你正在使用'''
,将它们更改为"""