gpt4 book ai didi

jenkins - 如何有条件 build 其他项目?

转载 作者:行者123 更新时间:2023-12-02 09:53:53 26 4
gpt4 key购买 nike

我有一个相当复杂的 Jenkins 工作,用于构建、单元测试和打包 Web 应用程序。根据具体情况,一旦这项工作完成,我想做不同的事情。我还没有找到可重复使用/可维护的方法来做到这一点。真的是这样吗,还是我遗漏了什么?

完成复杂的工作后我希望拥有的选项:

  1. 什么都不做

  2. 启动我的低风险更改构建管道:

    • 将我的 WAR 文件复制到我的工件存储库
    • 部署到生产环境
  3. 启动我的高风险变更构建管道:

    • 将我的 WAR 文件复制到我的工件存储库
    • 部署进行测试
    • 运行验收测试
    • 部署到生产

我还没有找到一个简单的方法来做到这一点。最简单但不太可维护的方法是创建三个单独的作业,每个作业都会启动下游构建。这种方法让我感到害怕,原因有几个,包括必须在三个地方而不是一个地方进行更改。此外,许多下游工作也几乎相同。唯一的区别在于它们调用的是哪些下游作业。工作岗位的激增似乎会导致难以维持的困惑。

我考虑过使用多种方法来将其作为一项工作,但到目前为止还没有奏效:

  1. 使作业成为多配置项目 ( https://wiki.jenkins-ci.org/display/JENKINS/Building+a+matrix+project )。这提供了一种使用参数注入(inject)作业的方法。我还没有找到使“构建其他项目”步骤响应参数的方法。

  2. 使用参数化触发器插件 ( https://wiki.jenkins-ci.org/display/JENKINS/Parameterized+Trigger+Plugin )。该插件允许您根据某些触发器触发下游作业。但触发器似乎限制太多。它们都基于构建的状态,而不是任意变量。我没有看到此处提供的任何适合我的用例的选项。

  3. 使用灵活发布插件 ( https://wiki.jenkins-ci.org/display/JENKINS/Flexible+Publish+Plugin )。该插件具有与参数化触发插件相反的问题。它有许多可以检查的有用条件,但看起来它不能开始构建另一个项目。其行动仅限于发布类型的事件。

  4. 使用灵活发布 + 任何构建步骤插件 ( https://wiki.jenkins-ci.org/display/JENKINS/Any+Build+Step+Plugin )。任何构建步骤插件允许使任何构建操作可用于灵活发布插件。虽然激活此插件后可以执行更多操作,但这些操作不包括“构建其他项目”。

真的没有简单的方法吗?我很惊讶我没有找到它,更惊讶的是我没有真正看到其他人尝试这样做?我做了什么不寻常的事吗?我是否遗漏了一些明显的东西?

最佳答案

如果我理解正确,您应该能够按照以下步骤执行此操作:

  1. 第一个构建步骤:
    1. 做正常的工作。对于您的情况:Web 应用程序的构建、单元测试和打包
    2. 根据结果让它创建一个具有特定名称的文件。
    3. 这意味着如果您希望之后运行 low-risk-change,请创建一个文件 low-risk.prop
  2. 第二个构建步骤:
    1. 创建触发器/调用在其他项目上构建从参数化触发器开始插入。
    2. 要构建的项目字段中输入您的低风险工作的名称
    3. 点击:添加参数
    4. 选择:属性文件中的参数
    5. 使用文件中的属性字段中输入low-risk.prop
    6. 启用如果任何文件丢失则不触发
  3. 第三构建步骤:
    1. 检查 low-risk.prop 文件是否存在
    2. 删除文件

对高风险工作做同样的事情

现在您应该具有以下设置:

  • 如果在第一个构建步骤期间出现名为 low-risk.prop 的文件,则将启动低风险作业
  • 如果在第一个构建步骤期间出现名为 high-risk.prop 的文件,则将启动高风险作业
  • 如果没有 .prop 文件,则不会发生任何事情

这就是您想要实现的目标。不是吗?

关于jenkins - 如何有条件 build 其他项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13091488/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com