Jenkins脚本化的管道。两个问题:
我想念什么?(请参见下面的脚本)
node {
var=10
stage('HelloWorld') {
sh '''
echo "Hello World. Var=$var" ===> Prints nothing for var
var=20'''
}
stage('git clone') {
echo "Cloning git. Var = $var" ==> Prints 20, and not 10
sh '''
echo "Var in second stage is = $var" ===> Doesnt print anything here. I need 20.
'''
}
}
您的示例不起作用,因为您使用的是带单引号的字符串文字。从Groovy手册(重点是我的):
任何Groovy的表达可以在所有字符串文字从被内插,除了 单 和 三单引号 的字符串。
试试这个:
sh "echo 'Hello World. Var=$var'"
或这个:
sh """
echo 'Hello World. Var=$var'
echo 'More stuff'
"""
您不能从Shell步骤直接设置Groovy变量。从Groovy到Shell,这仅在一个方向上起作用。相反,您可以设置退出代码或将数据写入Groovy可以读取的stdout。
传递true
参数returnStatus
并从shell脚本中设置退出代码,该代码将是sh
步骤的返回值。
var = sh script: 'exit 42', returnStatus: true
echo "$var" // prints 42
传递true
参数returnStdout
并echo
从shell脚本使用以输出字符串数据。
var = sh script: "echo 'the answer is 42'", returnStdout: true
echo "$var" // prints "the answer is 42"
传递true
参数returnStdout
并echo
从shell脚本使用以JSON格式输出字符串数据。
使用解析Groovy代码中的JSON数据JsonSlurper
。现在,您可以查询一个常规的Groovy对象。
def jsonStr = sh returnStdout: true, script: """
echo '{
"answer": 42,
"question": "what is 6 times 7"
}'
"""
def jsonData = new groovy.json.JsonSlurper().parseText( jsonStr )
echo "answer: $jsonData.answer"
echo "question: $jsonData.question"
问题内容: 假设我在Jenkins中有一个Groovy脚本,其中包含多行shell脚本。如何在该脚本中设置和使用变量?正常方式会产生错误: 捕获:groovy.lang.MissingPropertyException:否这样的属性:foo对于类:groovy.lang.Binding 问题答案: 您需要更改为三重单引号或转义美元 然后,您将跳过常规模板,这就是给您这个问题的原因
问题内容: 我能够运行以下shell脚本,但无法从Jenkins管道代码运行。 尝试1。 输出: 尝试2: 尝试过sh“”“ 输出 : 美元符号后的非法字符串体字符;解决方案:要么转义文字美元符号,要么将值表达式括起来 有人能帮我吗? 问题答案: 这应该工作。 您还需要在调用下面的新subshell时转义$
问题内容: 在Jenkins中,我希望获得用户输入并将其传递给Shell脚本以供进一步使用。 我尝试将其设置为环境变量,但是shell脚本无法获取最新值,而旧值是echo。 问题答案: 您需要在阶段之间传递变量作为环境变量,例如:
问题内容: 使用Jenkins 2.x中 的Pipeline插件,如何从一个步骤中访问在阶段或节点级别某个位置定义的Groovy变量? 简单的例子: 在Jenkins输出页面上给出以下内容: 可以看到,在该步骤中将打印一个空字符串。 解决方法是通过以下方式在环境范围内定义变量 并通过打印 但是,这种滥用会破坏此任务的环境范围。 问题答案: 要使用可模板化的字符串(将变量替换为字符串),请使用双引号
问题内容: 我有一个Jenkins管道作业,我将一些构建变量作为输入,如果用户未传递变量,我将执行脚本并获取这些变量的值。稍后,我必须使用这些变量的值来触发其他作业。 所以我的代码看起来像这样: 问题是当我用空T_RELEASE_VERSION触发主作业时,子构建作业t-integ-pipeline用RELEASE_VERSION参数的空值触发。 如何更改shell执行器中的groovy参数,然后
我正在尝试使用groovy构建脚本将构建管道迁移到“管道插件”。 我的管道通常是: 测试(梯度) 我想在我的jenkins构建脚本中使用像version/group等的gradle变量来发布到artiFactory中的正确文件夹中。这是artiFactory插件过去会为我处理的事情。如何实现? 对于单个gradle项目,我使用如下内容: