确保jenkins管道使用相同的节点进行下载流作业

确保jenkins管道使用相同的节点进行下载流作业,jenkins,jenkins-pipeline,Jenkins,Jenkins Pipeline,案例: 我有3台机器(A、B、C)作为从机(共享相同的节点标签,例如“build”) 我有一条管道,可能会触发不同的下游作业。我需要确保所有作业和下游作业使用相同的节点(用于共享某些文件等)。我怎么能做到 a) 我将节点标签传递给下游,但我不确定下游是否会采用相同的节点。(使用从属“a”的父作业和我将节点标签“build”传递给下游作业,但可能在下游作业中采用从属“B”) b) 当管道执行时,当我将这个从机名称传递给下游时,这是获取运行时从机的某种方式吗 或者这是更好的方法吗?即使有静态代理,工

案例: 我有3台机器(A、B、C)作为从机(共享相同的节点标签,例如“build”)

我有一条管道,可能会触发不同的下游作业。我需要确保所有作业和下游作业使用相同的节点(用于共享某些文件等)。我怎么能做到

a) 我将节点标签传递给下游,但我不确定下游是否会采用相同的节点。(使用从属“a”的父作业和我将节点标签“build”传递给下游作业,但可能在下游作业中采用从属“B”)

b) 当管道执行时,当我将这个从机名称传递给下游时,这是获取运行时从机的某种方式吗


或者这是更好的方法吗?

即使有静态代理,工作区最终也会被清理,所以不要依赖构建时工作区中是否存在文件


只需在上游作业中归档您需要的内容(使用
归档
步骤),然后在下游作业中使用即可获得您需要的内容。您可能需要参数化下游作业,以便将引用传递给所需的上游工件(复制工件插件中有很多选择器,您可以使用它们来实现所需的功能。

即使有静态代理,工作区最终也会被清理,因此不要依赖于构建时工作区中是否存在文件

只需在上游作业中归档您需要的任何内容(使用
归档
步骤),然后在下游作业中使用即可获得您需要的内容。您可能需要对下游作业进行参数化,以便将引用传递给您需要的上游工件(复制工件插件中有很多选择器可用,您可以使用它们来实现所需的功能。

我建议您尝试使用该插件

安装后,选中“此项目已参数化”选项,并从“添加参数”下拉列表中选择“节点”

在使用参数构建作业时,它将以下拉形式填充所有节点

它还有一些其他的选项可以帮助你。

我建议你试试这个插件

安装后,选中“此项目已参数化”选项,并从“添加参数”下拉列表中选择“节点”

在使用参数构建作业时,它将以下拉形式填充所有节点


它还有一些其他选项可以帮助您。

如果您要从管道手动触发子作业,则可以使用如下语法传递特定的节点标签

build job: 'test_job', parameters: [[$class: 'LabelParameterValue', name: 'node', label: 'tester1']]
build job: 'test_job', parameters: [[$class: 'LabelParameterValue', name: 'node', label: 'tester2']]
您应该能够通过这种方式获取节点的当前标签
${env.node\u NAME}”

  • 发现于
  • 参考文件-

但是是的,如果您想在其他作业中使用此作业中的某些文件进行操作,那么您将需要使用例如提到的复制工件插件,因为作业的工作区是独立的,每个作业都有不同的内容。

如果您要从管道手动触发子作业,则可以使用语法作为传递指定的集成电路节点标签

build job: 'test_job', parameters: [[$class: 'LabelParameterValue', name: 'node', label: 'tester1']]
build job: 'test_job', parameters: [[$class: 'LabelParameterValue', name: 'node', label: 'tester2']]
您应该能够通过这种方式获取节点的当前标签
${env.node\u NAME}”

  • 发现于
  • 参考文件-

但是,是的,如果你想在其他作业中使用此作业中的一些文件,那么你需要使用例如提到的复制工件插件,因为作业的工作区是独立的,每个作业都有不同的内容。

对我来说最重要的问题是:为什么它们需要在同一个节点上运行

无论如何,实现这一点的一种方法是在第一个管道的节点块中检索节点的名称,如(注意:无法验证下面编写的代码):

在下游中,您使用该字符串参数作为节点块的输入-当然,您应该首先确保下游实际上是参数化的,具有名为
nodeName
的字符串参数:

node(nodeName) {
    // do some stuff
}

对我来说,最重要的问题是:为什么它们需要在同一个节点上运行

无论如何,实现这一点的一种方法是在第一个管道的节点块中检索节点的名称,如(注意:无法验证下面编写的代码):

在下游中,您使用该字符串参数作为节点块的输入-当然,您应该首先确保下游实际上是参数化的,具有名为
nodeName
的字符串参数:

node(nodeName) {
    // do some stuff
}

Thx!实际上我只需要确保文件在构建过程中存在。所以我认为复制工件插件也会为我工作?Thx!实际上我只需要确保文件在构建过程中存在。所以我认为复制工件插件也会为我工作?据我所知,这不是pr的解决方案问题描述的问题。据我所知,这不是问题描述的问题的解决方案。