我有一个相当复杂的Jenkins工作,它构建,单元测试和打包Web应用程序。根据情况,一旦这项工作完成,我想做不同的事情。我还没有找到一种可重用/可维护的方法来做到这一点。真的是这样还是我错过了什么?
完成复杂的工作后,我希望拥有的选项:
>
什么都不做
启动我的低风险变更构建管道:
启动我的高风险变更构建管道:
我还没有找到一个简单的方法来做到这一点。最简单但不太可维护的方法是制作三个单独的作业,每个作业都启动了下游构建。这种方法让我感到恐惧有几个原因,包括必须在三个地方而不是一个地方进行更改。此外,许多下游作业也几乎相同。唯一的区别是他们调用了哪些下游作业。工作的激增似乎会导致无法维持的混乱。
我已经考虑过使用几种方法来将其作为一项工作,但到目前为止还没有一种工作:
>
使作业成为多配置项目(https://wiki.jenkins-ci.org/display/JENKINS/Building矩阵项目)。这提供了一种向作业注入参数的方法。我还没有找到让“构建其他项目”步骤响应参数的方法。
使用参数化触发器插件(https://wiki.jenkins-ci.org/display/JENKINS/Parameterized触发插件)。此插件允许您基于某些触发器触发下游作业。不过,触发条件似乎过于严格。它们都基于构建的状态,而不是任意变量。我看不到这里提供的任何选项适用于我的用例。
使用灵活发布插件(https://wiki.jenkins-ci.org/display/JENKINS/Flexible发布插件)。这个插件和参数化触发器插件有相反的问题。它可以检查许多有用的条件,但它看起来不像可以开始建立另一个项目。它的操作仅限于发布类型的活动。
使用灵活发布任何构建步骤插件(https://wiki.jenkins-ci.org/display/JENKINS/Any 构建步骤插件)。“任何构建步骤”插件允许将任何构建操作提供给“灵活发布”插件。虽然激活此插件后会提供更多操作,但这些操作不包括“构建其他项目”。
真的没有简单的方法来做到这一点吗?我很惊讶我没有发现它,更惊讶的是我没有真正看到任何其他人试图这样做?我做了什么不寻常的事吗?我是不是遗漏了什么明显的东西?
如果您需要有条件的后期构建步骤,有一个插件:
https://wiki.jenkins-ci.org/display/JENKINS/Post构建任务
它将在控制台日志中搜索您指定的RegEx,如果找到,将执行自定义脚本。您可以配置相当复杂的条件,并且可以配置多组条件,每组条件都执行不同的构建后任务。
它没有为您提供通常的“构建步骤”操作,所以您必须在那里编写自己的脚本。您可以用jenkins支持的标准方式(例如使用curl)用不同的参数触发同一个作业的执行,或者用一些参数触发另一个作业的执行
还有一个选择是詹金斯文本查找插件:< br > https://wiki.jenkins-ci.org/display/JENKINS/Text-finder插件
这是一个构建后步骤,如果在控制台文本(甚至工作区中的某个文件)中发现了正则表达式,它允许将构建强制标记为“不稳定”。因此,在您的构建步骤中,根据您的条件,将一个唯一的行回显到控制台日志中,然后对该行执行正则表达式。然后您可以使用“触发参数化buid”并将条件设置为“不稳定”。这还有一个额外的好处,即在视觉上标记构建不同(使用黄色球),但是使用此方法您只有一个条件选项,从您的OP来看,您似乎需要2个。
尝试这两种方法的组合:
你看过条件构建插件吗?(https://wiki.jenkins.io/display/JENKINS/Conditional build step插件)
我认为它能做你正在寻找的。
如果我理解正确,你应该能够通过以下步骤做到这一点:
对高风险的工作也一样
现在,您应该具有以下设置:
这就是你想要实现的目标。不是吗?
问题内容: 假设有人给您一个类,具有以下构造函数: 假设您要创建一个子类。您如何有条件地在中调用构造函数? 换句话说,进行这种工作的“正确”方法是什么? 问题答案: 是的,@ JohanSjöberg说了什么。 看起来您的示例也非常人为。没有神奇的答案可以解决这个问题:) 通常,如果您有一堆构造函数,则最好将它们重构为四个单独的类(一个类仅应负责一种类型的事情)。
您好,我有一个名为a的项目,包含三个模块(核心、移动网络),结构如下: My settings.gradle类似于: 现在已经有了不同的版本,在版本2.0之前,我们提供移动模块,在此之前,我们不想构建“移动”模块。现在我有了1.0、1.1、1.2、2.0、2.1版本,我们在每次提交代码之前测试和检查编译。我们是这样做的: 这样,在2.0之前的版本中,它仍然会构建“移动”模块,这当然会失败。我的问题
我知道不是一个有效的阶段,但我只是想说明我试图完成什么,即只有在提供选项时才构建fat jar的条件安装。
问题内容: 首先,我要说我是Ant的新手。就像之前一样,我只是在两天前才开始学习它以完成此任务。 我想要做的是创建一个“ master”蚂蚁脚本,该脚本调用其他几个蚂蚁脚本。例如: 现在,我拥有用于A,B和C的所有单独版本。通过这个,我的意思是我可以从这些文件夹中的任何一个运行“ ant”,它将构建项目并生成一个jar文件。如果以这种方式构建A,B和C,则我有3个jar文件。然后,我可以将它们
我有一个问题,我必须做一个查询,根据产品上是否有图像,我必须在列中显示“是”或“否”的值。我必须加入product表这是安全的,但我如何在查询中判断“image presence”字段是否为空,写“no”,否则写“yes”。我希望我已经解释过了。谢谢大家。
在dataframe中,如何有条件地将一列的值填充为列表中另一列的值? 这与这个SO问题非常相似,但当我申请时: 我得到一个错误: 我想中的