Jenkins持续集成和夜间构建

Jenkins持续集成和夜间构建,jenkins,continuous-integration,build-process,Jenkins,Continuous Integration,Build Process,我是詹金斯的新手,我想得到一些关于我应该如何安排工作的帮助(安慰) 最终目标相当简单 目标1:当开发人员将代码提交给mercurial repo时,Jenkins会进行更改、构建项目并运行单元测试。这种情况在一天中不断发生,因此如果开发人员破坏了某些东西,他们会得到尽可能早的反馈 目标2:詹金斯每晚从上面提取最后一个稳定的构建并运行自动化UI测试。如果这些测试通过,它会在某处发布夜间构建 我有一个工作配置,以实现目标1,但我正在努力与目标2。 (不是出版部分,而是用目标1的最后一个稳定构建来

我是詹金斯的新手,我想得到一些关于我应该如何安排工作的帮助(安慰)

最终目标相当简单

  • 目标1:当开发人员将代码提交给mercurial repo时,Jenkins会进行更改、构建项目并运行单元测试。这种情况在一天中不断发生,因此如果开发人员破坏了某些东西,他们会得到尽可能早的反馈

  • 目标2:詹金斯每晚从上面提取最后一个稳定的构建并运行自动化UI测试。如果这些测试通过,它会在某处发布夜间构建

我有一个工作配置,以实现目标1,但我正在努力与目标2。 (不是出版部分,而是用目标1的最后一个稳定构建来播种这份工作的想法)

目前,我正计划使用HG回购协议中的分支来实现这一点

我的分支看起来像Main>>Int>>Dev

目标1中的工作将由开发分支负责。 如果构建成功并且测试通过,它将提交给Int分支

然后,objective 2中的工作可以简单地在Int分支的顶端工作

通常是这样做的吗

我还一直在考虑: -升级的构建和复制工件等插件 -参数化构建 -下游工作


在我看来,我的目标相当普遍,但我在网上找不到很多这种方法的例子。也许很明显没有必要,但我只是想检查一下。

在过去,我将生成的工件像这样存储在工件存储库中。您可以使用Nexus或Artifactory之类的工具来实现这一点,但我也使用了平面文件系统

正如您所说,您可以将构建工件放在源代码控制中,但是通常没有理由对编译的构建进行版本控制(您应该能够根据版本号重新创建它们)——它们通常只会占用您的repo中的大量空间


如果您的版本号本质上是递增的,那么您的夜间工作应该能够相当容易地获取最新版本。

也许您可以捕获最后一个好的修订ID并将其发布到某个地方。然后夜间构建可以使用最后一次已知的良好修订。执行此操作的方法可能会有所不同,但我想在这里介绍的是使用修订ID的概念。这将避免您必须创建一个单独的分支。

我没有遇到过这种情况,但在阅读之前,我想到了您的解决方案。