我有一个相当复杂的 Jenkins 工作,它构建、单元测试和打包一个 Web 应用程序。根据情况,一旦这项工作完成,我想做不同的事情。我还没有找到一种可重用/可维护的方法来做到这一点。真的是这样还是我错过了什么?
完成复杂的工作后,我希望拥有的选项:
没做什么
开始我的低风险更改构建管道:
- 将我的 WAR 文件复制到我的工件存储库
- 部署到生产
启动我的高风险更改构建管道:
- 将我的 WAR 文件复制到我的工件存储库
- 部署到测试
- 运行验收测试
- 部署到生产
我还没有找到一个简单的方法来做到这一点。最简单但不易维护的方法是制作三个独立的作业,每个作业都会启动下游构建。这种方法让我害怕有几个原因,包括必须在三个地方而不是一个地方进行更改。此外,许多下游工作也几乎相同。唯一的区别是他们调用了哪些下游作业。工作的激增似乎会导致无法维护的混乱。
我已经研究过使用几种方法将其保留为一项工作,但到目前为止还没有一种方法有效:
使这项工作成为一个多配置项目(https://wiki.jenkins-ci.org/display/JENKINS/Building+a+matrix+project)。这提供了一种使用参数注入作业的方法。我还没有找到使“构建其他项目”步骤响应参数的方法。
使用 Parameterized-Trigger 插件 ( https://wiki.jenkins-ci.org/display/JENKINS/Parameterized+Trigger+Plugin )。该插件允许您根据某些触发器触发下游作业。不过,触发器似乎过于严格。它们都基于构建的状态,而不是任意变量。我没有看到此处提供的任何适用于我的用例的选项。
使用灵活发布插件 ( https://wiki.jenkins-ci.org/display/JENKINS/Flexible+Publish+Plugin )。这个插件与参数化触发器插件有相反的问题。它有许多可以检查的有用条件,但看起来它不能开始构建另一个项目。它的行动仅限于发布类型的活动。
使用灵活发布 + 任何构建步骤插件 ( https://wiki.jenkins-ci.org/display/JENKINS/Any+Build+Step+Plugin )。Any Build Step 插件允许对 Flexible Publish 插件进行任何构建操作。虽然激活此插件后提供了更多操作,但这些操作不包括“构建其他项目”。
真的没有简单的方法来做到这一点吗?我很惊讶我没有找到它,更惊讶的是我还没有真正看到其他人试图这样做?我在做一些不寻常的事情吗?我有什么明显的遗漏吗?