Jenkins 管道:在第 1 阶段,从文件中读取数字,在第 2 阶段,**在**节点名称中,使用该数字
Jenkins pipeline: in stage1, read number from file, in stage2, **within** node name, use that number
要继续:
我现在不得不将一个数字设置为节点名称的一部分,而这个数字包含在另一个节点上的文件中。
例如,如果属性文件包含数字 6,我必须 运行 在名为 DEV-SME-6 的节点上执行作业。
我有没有办法:在第 1 阶段,从主节点上的文件中读取数字,如下所示:
Env_number = readFile 'file_containing_an_integer_between_2_and_7.txt'
然后在第 2 阶段,在 节点名称中,使用该数字指定节点名称的一部分,如下所示:
node('DEV-SME-$Env_number')
??
这不适用于取消存储(在阶段中指定节点名称之前尝试取消存储会给我一个错误:FilePath.hudson 丢失
我目前的代码,在尝试了一些东西之后,是这样的:
stage "first stage"
node ('master'){
try{
env.Env_number = sh ' echo DEV$(cat file_containing_an_integer_between_2_and_7.txt '
catch(error)
echo "failed to set variable Env_number "
}}
stage "second stage"
node('${Env_number}') {
try{
command1
command2
}}
这给了我一个 "no nodes with the label 'null' "
您不能在节点外部使用存储,因为它意味着将 "stashed" 文件从编排主机复制到运行代码的节点。
对于这些东西,您应该使用将在执行过程中序列化的 env 变量。将其用于应该在不同节点之间存在的信息。
你在上面的代码中犯了一个错误。
stage "second stage"
node("${Env_number}") {
应该是:
stage "second stage"
node("${env.Env_number}") {
成功!没有 sh 脚本,有 readFile:
stage "first stage"
node ('master'){
try{
env.Env_number = readFile 'file_containing_an_integer_between_2_and_7.txt'
catch(error)
echo "failed to set variable Env_number "
}}
stage "second stage"
node("DEV${Env_number}") {
try{
command1
command2
}}
要继续:
我现在不得不将一个数字设置为节点名称的一部分,而这个数字包含在另一个节点上的文件中。
例如,如果属性文件包含数字 6,我必须 运行 在名为 DEV-SME-6 的节点上执行作业。
我有没有办法:在第 1 阶段,从主节点上的文件中读取数字,如下所示:
Env_number = readFile 'file_containing_an_integer_between_2_and_7.txt'
然后在第 2 阶段,在 节点名称中,使用该数字指定节点名称的一部分,如下所示:
node('DEV-SME-$Env_number')
??
这不适用于取消存储(在阶段中指定节点名称之前尝试取消存储会给我一个错误:FilePath.hudson 丢失
我目前的代码,在尝试了一些东西之后,是这样的:
stage "first stage"
node ('master'){
try{
env.Env_number = sh ' echo DEV$(cat file_containing_an_integer_between_2_and_7.txt '
catch(error)
echo "failed to set variable Env_number "
}}
stage "second stage"
node('${Env_number}') {
try{
command1
command2
}}
这给了我一个 "no nodes with the label 'null' "
您不能在节点外部使用存储,因为它意味着将 "stashed" 文件从编排主机复制到运行代码的节点。
对于这些东西,您应该使用将在执行过程中序列化的 env 变量。将其用于应该在不同节点之间存在的信息。
你在上面的代码中犯了一个错误。
stage "second stage"
node("${Env_number}") {
应该是:
stage "second stage"
node("${env.Env_number}") {
成功!没有 sh 脚本,有 readFile:
stage "first stage"
node ('master'){
try{
env.Env_number = readFile 'file_containing_an_integer_between_2_and_7.txt'
catch(error)
echo "failed to set variable Env_number "
}}
stage "second stage"
node("DEV${Env_number}") {
try{
command1
command2
}}