如何在通过参数和标签选项选择的节点上 运行 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