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

时间:2015-07-17 21:00:00

标签: jenkins jenkins-plugins jenkins-workflow

如果父成功完成并且它有更改(更改推送到scm),我该如何触发参数化构建?

这是一个场景:我有3个版本:A,B和C. 如果A被A调用或者它有变化,B将被构建。 只有在B成功完成并且由于scm更改而构建B而不是因为它是由A触发时才应该构建C

由于

1 个答案:

答案 0 :(得分:10)

添加到A:

构建后操作在其他项目上触发参数化构建:

  • 要构建的项目:B
  • 构建时触发:完成(始终触发)
  • 添加参数预定义参数: A_HAS_BEEN_BUILT=YES

添加到B:

元数据→[✔]此版本已参数化→添加参数字符串参数:

  • 姓名:A_HAS_BEEN_BUILT
  • 默认值:NO

构建后操作在其他项目上触发参数化构建:

  • 要构建的项目:C
  • 构建时触发:稳定 [无论如何都是默认]
  • 添加参数预定义参数: A_HAS_BEEN_BUILT=${A_HAS_BEEN_BUILT}

添加到C:

元数据→[✔]此版本已参数化_→添加参数字符串参数:

  • 姓名:A_HAS_BEEN_BUILT
  • 默认值:NO

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

  • 运行?:
  • !:正则表达式匹配
    • 表达:^YES$
    • 标签:${ENV,var="A_HAS_BEEN_BUILT"}
  • 构建器: ...根据您的需要......


请参阅Parameterized BuildParameterized Trigger PluginRun Condition Plugin.

更新1

上面给出的设置会产生以下结果:

  1. 构建→B构建→B稳定→C开始,但不构建
  2. B轮询SCM→SCM更改→B版本→B稳定→C版本
  3. 根据讨论,以下是:

    1. 构建→B构建
    2. B轮询SCM→SCM更改→B版本→B稳定→C版本
    3. 更新2

      防止在1点触发C:

      • 创建B的上游项目,轮询SCM并触发B

      • 在B中配置以下内容:

        源代码管理→◉无

        构建触发器

        • []民意调查SCM


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

        • 运行?:执行shell /执行Windows批处理命令
          • 命令: ... SCM结帐命令;如果没有SCM更改,则将退出状态/ ERRORLEVEL设置为大于0
        • 构建器:触发/调用构建在其他项目上
          • 构建触发器
            • 要构建的项目:C
相关问题