【问题标题】:How can I trigger a job checking the status of two other job?如何触发检查另外两个工作状态的工作?
【发布时间】:2016-05-24 12:44:01
【问题描述】:

我有三份工作。

  1. 第一个父工作
  2. 父母的第二份工作
  3. 童工

我只想在“第一个父作业”和“第二个父作业”完成并成功后触发“子作业”。我对这两个 Parent 工作没有任何控制权。两者都可以在任何时间以任何顺序运行。

简而言之,我有一个依赖于两个父工作的子工作。我想在两个父作业都完成后运行这个子作业。

请帮助我解决问题!我可以有一个插件或 Jenkins python API。

【问题讨论】:

  • 我可以要求澄清吗?您说两者都可以在任何时间和任何顺序运行,但您需要同时运行才能触发子作业?因此,如果一个正在运行并成功完成,您不应该触发子作业吗?父工作之间有什么联系吗?它们是否与构建数量一致? (如 - P1 运行 4 次,P2 运行 2 次,您是否会等待 P2 再运行 2 次才能触发孩子的作业?)
  • @Dvir669 父作业不相关。例如: Parent Job1 创建一个安装程序 A Parent Job2 创建另一个安装程序 B Child Job 需要安装程序来构建这些安装程序(A 和 B)的套件。因此,父母的工作可以随时完成。两个父作业都是独立的。我需要一种机制,子作业从一个父作业接受一个触发器并等待下一个父作业的成功运行。
  • 您似乎只需要两个工作中最后一个成功的安装程序。我会以不同的方式实现它,但您可以尝试查看“构建触发器”部分并在您的子作业中标记:“在构建其他项目后构建”。它可以让你在父母成功完成后建立孩子的工作。祝你好运!

标签: python jenkins jenkins-plugins jenkins-workflow jenkins-pipeline


【解决方案1】:

您可以使用 jenkins 管道插件来做到这一点。这是示例代码:

parallel firstJob: {
        node {
            echo "Build parent-job-1"
            build 'parent-job-1'
        }
    }, secondJob: {
        node {
            echo "Build parent-job-2"
            build 'parent-job-2'
        }
    }

node {    
    echo "Build child-job"
    build 'child-job'
}

【讨论】:

  • 我无法控制父作业。由另一个团队控制。
  • 所以也许您可以在部分构建触发器中添加:构建其他项目后构建并添加父作业。
  • 我需要在触发子作业之前完成父作业。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-06
  • 2020-06-10
相关资源
最近更新 更多