如何在通过参数和标签选项选择的节点上 运行 jenkins 声明管道
how to run jenkins declarative pipeline on node selected via parameter and label option
我想 运行 通过节点和标签插件将节点设置为参数的管道。
如何更改声明式管道
pipeline {
agent {
label 'whatever'
}
...
使用EXECUTION_NODE作为执行管道的代理?这似乎比我想象的要复杂得多,或者我遗漏了一些明显的东西。
问题是这样的:为了向您展示“使用参数构建”页面,Jenkins 需要 运行 您的管道并解析其参数。要 运行 管道,Jenkins 需要一个节点。要拥有一个节点,它会解析您的管道。因此在显示对话框时已经选择了该节点。此外,在声明式管道中,所有阶段的所有节点都在开始时被选中。
您可以通过 运行ning node
并提供 params.EXECUTION_NODE
作为标签来尝试 运行ning 脚本管道或脚本和声明的组合。脚本化管道逐行执行脚本。
编辑:这是有效的:
NODE = null
echo "This should be Null: $NODE"
node() {
stage("Define node") {
NODE = params.NODE
echo "This is now $NODE"
}
}
pipeline {
agent { node { label "$NODE" }}
parameters { string(name: 'NODE', defaultValue: 'some_node', description: '') }
stages {
stage("Main") {
steps {
echo "Hi"
}
}
}
}
这是第二个 运行 的输出,其中 'master' 作为参数:
Started by user marat
Running in Durability level: MAX_SURVIVABILITY
[Pipeline] Start of Pipeline
[Pipeline] echo
This should be Null: null
[Pipeline] node
Running on Jenkins in /home/jenkins/workspace/test
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Define node)
[Pipeline] echo
This is now master
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] node
Running on master in /var/jenkins_home/workspace/test
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Main)
[Pipeline] echo
Hi
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS
我想 运行 通过节点和标签插件将节点设置为参数的管道。
如何更改声明式管道
pipeline {
agent {
label 'whatever'
}
...
使用EXECUTION_NODE作为执行管道的代理?这似乎比我想象的要复杂得多,或者我遗漏了一些明显的东西。
问题是这样的:为了向您展示“使用参数构建”页面,Jenkins 需要 运行 您的管道并解析其参数。要 运行 管道,Jenkins 需要一个节点。要拥有一个节点,它会解析您的管道。因此在显示对话框时已经选择了该节点。此外,在声明式管道中,所有阶段的所有节点都在开始时被选中。
您可以通过 运行ning node
并提供 params.EXECUTION_NODE
作为标签来尝试 运行ning 脚本管道或脚本和声明的组合。脚本化管道逐行执行脚本。
编辑:这是有效的:
NODE = null
echo "This should be Null: $NODE"
node() {
stage("Define node") {
NODE = params.NODE
echo "This is now $NODE"
}
}
pipeline {
agent { node { label "$NODE" }}
parameters { string(name: 'NODE', defaultValue: 'some_node', description: '') }
stages {
stage("Main") {
steps {
echo "Hi"
}
}
}
}
这是第二个 运行 的输出,其中 'master' 作为参数:
Started by user marat
Running in Durability level: MAX_SURVIVABILITY
[Pipeline] Start of Pipeline
[Pipeline] echo
This should be Null: null
[Pipeline] node
Running on Jenkins in /home/jenkins/workspace/test
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Define node)
[Pipeline] echo
This is now master
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] node
Running on master in /var/jenkins_home/workspace/test
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Main)
[Pipeline] echo
Hi
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS