Jenkins管道我需要执行shell命令,结果是def变量的值。
我该怎么办?谢谢
def projectFlag = sh("`kubectl get deployment -n ${namespace}| grep ${project} | wc -l`")
//
if ( "${projectFlag}" == 1 ) {
def projectCI = sh("`kubectl get deployment ${project} -n ${namespace} -o jsonpath={..image}`")
echo "$projectCI"
} else if ( "$projectCI" == "${imageTag}" ) {
sh("kubectl delete deploy ${project} -n ${namespaces}")
def redeployFlag = '1'
echo "$redeployFlag"
if ( "$projectCI" != "${imageTag}" ){
sh("kubectl set image deployment/${project} ${appName}=${imageTag} -n ${namespaces}")
}
else {
def redeployFlag = '2'
}
答案 0 :(得分:0)
我相信您在问如何将shell命令的结果保存到变量中以供以后使用?
执行此操作的方法是使用Shell步骤界面上可用的一些可选参数。有关文档,请参见https://jenkins.io/doc/pipeline/steps/workflow-durable-task-step/#sh-shell-script
def projectFlag = sh(returnStdout: true,
script: "`kubectl get deployment -n ${namespace}| grep ${project} | wc -l`"
).trim()
基本上将returnStdout设置为true
。 .trim()
对于确保您不会拾取\n
换行符(这会破坏您的评估逻辑)至关重要。