詹金斯未能建立下游工作

omu*_*gru 14 continuous-integration continuous-deployment jenkins

我正试图从我目前的工作中触发下游工作

pipeline {
  stages {
    stage('foo') {
      steps{
        build job: 'my-job', propagate: true, wait: true
      }
     }
  }
}
Run Code Online (Sandbox Code Playgroud)

目的是等待工作结果,然后根据结果失败或成功.詹金斯总是对这条消息失败Waiting for non-job items is not supported.上面提到的工作没有任何参数,并且使用multibranch管道插件定义为我的其余工作.

我能想到的是,这种类型的jenkins项目不支持作为构建步骤输入,但这似乎违反直觉并且会被证明对我来说是一种阻碍.任何人都可以确认这是否确实如此?

如果是这样,有人可以提出任何变通方法吗?

谢谢

omu*_*gru 31

我实际上设法通过更多地关注构建步骤的定义来解决这个问题.由于我的所有下游作业都被定义为多分支管道作业,因此它们的结构类似于文件夹,文件夹中的每个项目代表一个单独的作业.因此,调用下游工作的正确方法不是build job: 'my-job', propagate: true, wait: true,而是build job: "my-job/my-branch-name", propagate: true, wait: true.

此外,与问题无关但与手头的问题有关,请确保jenkins机器上至少还有一个执行器可用,因为等待语法将占用等待作业的一个线程,等待作业的一个线程在,你很容易发现自己处于资源饥饿类型的情况.

希望这可以帮助

  • 如果下游多分支管道尚未设置分支,这将如何工作?在这种情况下,我收到此错误:“错误:找不到名为 my-job/new-branch 的项目”。 (3认同)
  • 一般而言,执行此操作的正确方法是什么?我尝试了 `build "my-job/${env.BRANCH_NAME}"` 但失败并出现“未找到名为 X 的项目”错误,即使管道已经知道该分支。 (2认同)