Jenkins-在其他项目上触发参数化构建

Jenkins-在其他项目上触发参数化构建,jenkins,jenkins-plugins,jenkins-workflow,Jenkins,Jenkins Plugins,Jenkins Workflow,仅当父级成功完成并且有更改(更改推送到scm)时,如何触发参数化生成 下面是一个场景:我有3个构建:a、B和C。 如果B被A调用或有更改,则将生成B。 只有在B成功完成并且B是由于scm更改而不是因为A触发而生成的情况下,才应生成C 谢谢添加到: 构建后操作→ 在其他项目上触发参数化生成: 要构建的项目:B 生成完成时触发(始终触发) 添加参数→ 预定义参数:A\u已构建=是 添加到B: 元数据→ [✔] 这个构建是参数化的→ 添加参数→ 字符串参数: 名称:A\u已建成 默认值:NO

仅当父级成功完成并且有更改(更改推送到scm)时,如何触发参数化生成

下面是一个场景:我有3个构建:a、B和C。 如果B被A调用或有更改,则将生成B。
只有在B成功完成并且B是由于scm更改而不是因为A触发而生成的情况下,才应生成C

谢谢

添加到: 构建后操作在其他项目上触发参数化生成:

  • 要构建的项目:
    B
  • 生成完成时触发(始终触发)
  • 添加参数预定义参数:
    A\u已构建=是
添加到B: 元数据→ [✔] 这个构建是参数化的→ 添加参数字符串参数:

  • 名称:
    A\u已建成
  • 默认值:
    NO
构建后操作在其他项目上触发参数化生成:

  • 要构建的项目:
    C
  • 生成时触发:稳定[默认值]
  • 添加参数预定义参数:
    A\u已构建=${A\u已构建}
添加到C: 元数据→ [✔] 此构建是参数化的→ 添加参数字符串参数:

  • 名称:
    A\u已建成
  • 默认值:
    NO
构建添加构建步骤条件步骤(单个):

  • 跑?:不是
  • !:正则表达式匹配
    • 表达式:
      ^YES$
    • 标签:
      ${ENV,var=“A\u已经构建”}
  • 建筑商:……根据您的需要

看到了吗

更新1 上述设置会导致以下情况:

  • 建造→ B构建→ B是稳定的→ C启动,但不构建
  • B轮询SCM→ 供应链管理变化→ B构建→ B是稳定的→ C构建
  • 根据讨论,拟采取以下措施:

  • 建造→ B构建
  • B轮询SCM→ 供应链管理变化→ B构建→ B是稳定的→ C构建
  • 更新2 防止在1时触发C:

    • 为B创建一个上游项目,该项目轮询SCM并触发B

    • 在B中配置以下内容:

      源代码管理→ ◉ 没有

      构建触发器

      • []轮询SCM

      构建→ 添加构建步骤条件步骤(单个):

      • 运行?:执行shell/执行Windows批处理命令
        • 命令:…SCM签出命令;在没有SCM更改的情况下,将退出状态/错误级别设置为大于0
      • 生成器:在其他项目上触发/调用生成
        • 构建触发器
          • 要构建的项目:
            C

    谢谢你的详细回答。是的,这会起作用,但我正在寻找一种根本不会触发生成“C”的解决方案…@kazerm为什么写“应该生成C…”那么,“只有B成功完成后才应该生成C”-我想踢一个新的C版本,但前提是B中有更改。如果没有更改-我不希望C启动然后停止-我希望它不要在all@kazerm如果没有任何更改,则中止B,在这种情况下C将永远不会启动。对不起,我可能没有很好地解释我自己。我总是想构建“B”即使没有任何更改(但它被构建“A”踢出)。我只是不想总是构建“C”。如果B被A调用-不要构建C,如果B被推到github踢出,构建C