当前位置: 首页 > 知识库问答 >
问题:

Jenkins-在同一台机器中触发另一个管道作业-不创建新的“执行器”

司空锋
2023-03-14

我想做类似的事情——从触发器管道中调用“some_job_pipeline”,它将由参数控制器在同一个或某个特定的Jenkins节点上执行。如果是,则应在同一个/主/父作业jenkins节点上执行-不应创建新的“执行器”。如果我将“Node1”节点执行器计数设置为1,作业将成功运行(不需要第二个执行器)。

在这个例子中,我有一个Trigger_Main_Job,看起来像这样:

node("${params.JenkinsNode}") {
    stage("Stage 1") {
        ...
    }
    stage("some_job_pipeline") {
        build job: 'some_job_pipeline', parameters: []
    }
    stage("Stage 3") {
        ...
    }
    ...
}

还有一些类似这样的管道:boolean runOnItsOwnNode=params。詹金斯诺德?。trim()

properties([
    parameters([
        string(name: 'JenkinsNode', defaultValue: '', description: 'Node from which to deploy. If "JenkinsNode" is not passed - then it will use parent job node.')
    ])
])

if(runOnItsOwnNode) {
    node("${params.JenkinsNode}") {
       print "Deploying from node: '${params.JenkinsNode}'"
    }
}
else {
    print "Deploying from parent job node."
    ???? THIS_IS MISSING_PART ????
}

注意:类似的问题,但它指出应该更改父管道:Jenkins管道:如何触发另一个作业并在不使用额外代理/执行器的情况下等待它。问题是是否有可能在不更改“触发”作业的情况下实现它以及如何实现它。我可以创建“some_job_pipeline”,其执行将仅取决于JenkinsNode传递的参数,而不是父/调用的作业实现。

我尝试使用不同的变体来指定“?”这个“U”缺少“U”部分??”节点(“主节点”)中的代码部分{…}没有“便条”和类似的东西。但运气不佳——“一些工作管道”仍然消耗/需要新的执行者。

共有1个答案

张璞
2023-03-14

查看“管道构建步骤插件”参考:

https://jenkins.io/doc/pipeline/steps/pipeline-build-step/#-建造工作

看起来有一个参数:

$class: 'NodeParameterValue'

name
    Type: String
labels
    Array/List
    Type: String
nodeEligibility
    Nested Choice of Objects
    $class: 'AllNodeEligibility'
    $class: 'IgnoreOfflineNodeEligibility'
    $class: 'IgnoreTempOfflineNodeEligibility'

您可以使用它将节点值传递给另一个作业。对不起,我不能做一些测试,我们只有一个节点在运行...

更多详细信息:https://github.com/jenkinsci/pipeline-build-step-plugin/blob/master/src/main/java/org/jenkinsci/plugins/workflow/support/steps/build/BuildUpstreamNodeActhtml" target="_blank">ion.java

 类似资料:
  • 是否可以从另一个作业触发Jenkins多分支管道的立即扫描操作?我在将旧版本的Gitlab与Jenkins中的管道作业集成时遇到了某些问题,并遇到了这样的解决方法。 或者,现在可以使用notifyCommit web钩子触发扫描多分支管道吗? 这样做的目的是每当Git存储库中发生更改时扫描多分支管道,以便在这样的更改后检测到新的分支。另一个我无法以其他方式实现的目的(除了对我来说非常邪恶的每个分支

  • 我有一个Jenkins管道作业,它需要监控另一个Jerkins作业(比如JobA)当前构建,并在当前管道阶段发布状态(构建状态:成功或失败)。如何实现这一点。不会从管道作业触发作业(JobA)。它将独立运行。从管道作业中,需要获取作业A的状态。

  • 我正在尝试设置各种Jenkins管道,其最后阶段总是运行一些验收测试。长话短说,所有产品的验收测试和测试数据(其中大部分是共享的)都被检查到同一个存储库中,该存储库的大小约为0.5 GB。因此,似乎最好为验收测试设置一个单独的作业,并通过每个管道的“构建”步骤触发它,并提供适当的参数来运行相关测试。(有时在不重建产品的情况下重新运行这些测试也很有用) 到目前为止,我发现我可以: 正常触发作业。但这

  • 我想用Quartz实现下面的算法,但不确定是否可以做到。这是我第一次尝试使用石英。 用户通知作业-此作业计算每月报告并向用户发送电子邮件,它需要用户id和用于生成自定义用户报告的其他参数 可能需要生成10,000多个这样的报告 null 如何确保每月作业在单个事务中执行,以便识别所有需要每月报告的用户,并安排作业通知他们 如何立即安排作业在创建它们的作业之后立即执行? 我用的是Spring 3.2

  • 问题内容: 我想创建一个Jenkins作业来启动其他Jenkins作业。那将非常容易,因为Jenkins模板项目插件允许我们创建一个类型为“使用来自另一个项目的构建器”的构建步骤。但是,使我的情况更难的是,我必须在其他计算机上开始Jenkins的工作。有什么标准方法可以做到吗? 问题答案: 万一您只想触发Job的新版本,您有多种方法可以完成它 您可以使用远程访问API并触发请求以从源Job构建目标

  • 管道A:仅由其自身回购之外的多个其他管道触发,但在同一项目中。作为被触发的结果,它对自己的回购进行更改,因此触发管道B。 pipleline B:仅由对其自身回购的更改触发,当被触发时,它将继续执行所需的任何操作 将语法流水线化 当前行为 null null 安装:https://docs.microsoft.com/en-us/azure/devops/cli/?view=azure-devop