Tag: 持续集成

我的构建可以规定我的代码覆盖范围永远不会变得更糟吗?

我正在使用hudson CI来管理一个直接的java web项目,使用ant来构建。 我想要求unit testing覆盖率永远不会比以前的构建更差,从而确保始终测试任何新代码,或者至少覆盖范围不断改进。 是否有一个以这种方式工作的哈德森插件? 编辑:我目前正在使用艾玛,但愿意切换到另一个覆盖应用程序。 另外,作为一个澄清,我已经看到了一些Hudson插件的阈值,但这并不是我所追求的。 例如,我想要的是,如果Build#12的覆盖率总体上是46%,并且有人在Build#13中检查了45%的覆盖率,则构建将会中断。 我想这样做的原因是我有一个测试覆盖率低的代码库。 我们没有时间回过头来追溯写unit testing,但我想确保覆盖率不断提高。 更新:Dan用我的计划指出了一个边缘案例肯定会成为一个问题。 我想我需要重新考虑这是否是一个好主意。

在Hudson或其他CI工具中使用Ant自动检出和编译Eclipse项目的最佳方法?

我们有几个产品有很多共享代码,必须保留多个版本。 为了解决这个问题,我们使用了很多Eclipse项目,其中一些包含库jar,还有一些包含共享源代码(在几个项目中,为了避免获得具有大量依赖关系的巨大堆,同时能够从头开始编译所有内容以确保源和二进制文件是一致)。 我们使用projectSet.psf管理那些,因为这些可以直接从CVS中拉出所有项目并留下完全准备好的工作区。 我们不直接进行ant构建或使用maven。 我们现在希望能够将所有这些项目及其各种版本放在一个连续集成工具中 – 我喜欢Hudson但这只是一个品味问题 – 这实际上意味着我们需要一种自动方式来检查项目到一个新的工作区,并按照每个项目中的项目文件中的描述编译源文件夹。 Hudson没有提供这样的方法来构建项目,所以我一直在考虑采用这种方法的最佳方法。 想法已经存在 查找或编写一个了解projectSet.psf并映射到cvs-checkout和编译标签的ant插件/转换器。 从Eclipse中创建build.xml文件并使用它们。 我试过这个,发现结果很冗长,绝对位置不好用自动工具把文件放在他们想要的地方。 编写一个了解projectSet.psf的Hudson插件来派生配置并构建它。 只要咬紧牙关并在东西破裂时手动创建和更新CI配置 – 我不喜欢这个:) 我真的很想知道其他人的经历,所以我可以决定如何处理这个问题。 编辑:另一个选项可能是使用CI,它更了解Eclipse项目和/或项目集。 我们没有宗教信仰 – 这只是让自己无需自己动手就可以运行的问题。 巡航控制会是一个更好的选择吗? 其他? 编辑:发现ant4eclipse有一个“团队项目集”工具。 http://ant4eclipse.sourceforge.net/ 编辑:使用ant4eclipse和ant-contrib ant扩展来构建一个完整的工作区作为一个sjgned runnable jar文件,类似于Eclipse 3.5M6中的Runnable Jar工具。 我仍然依赖于Eclipse来创建初始的空工作空间,并提取ProjectSet,这是下一个障碍。 编辑:使用双配置结束,即Hudson从CVS中提取与ProjectSet.pdf文件中列出的相同的模块集(需要具有相同的标记),使它们彼此相邻。 然后ant4eclipse与嵌入在主模块中的projectSet.psf文件很好地配合。 警告:Hudson中的模块列表必须手动更新,之后需要手动工作区清理才能让Hudson“发现”现在有比以前更多的项目。 这对我们来说已经好几个月了,但是让一切都在ant文件中运行是相当繁琐的。 编辑:使用ant4eclipse的“使用团队项目”和项目面板中的Ctrl-A,Ctrl-C以及Hudson的CVS项目中的Ctrl-V已经certificate可以很好地满足我们的需求(对于成熟项目而言很少改变)。 我正在等待ant4eclipse 1.0的发布 – http://www.ant4eclipse.org/ ,目前在里程碑2中 – 看看有多少本土function可以被ant4eclipse的东西取代。 编辑:ant4eclipse是在M4的20100609,所以http://www.ant4eclipse.org/node?page=1的时间表有些滑落。 编辑:使用我们的ant4eclipse方法更长时间后的结论是构建脚本变得非常粗糙并且难以维护。 团队ProjectSet工具(ant4eclipse用于定位项目)也适用于基于CVS的存储库,但在我们迁移到git之后却没有(这本身就是一件大事)。 新项目很可能基于maven,因为这在Jenkins中得到了很好的支持。

常春藤:强制本地快照依赖

我有一个依赖项目B的项目A; 两者都是积极发展的内部项目。 假设最新的Project A版本是1.1.2,这取决于项目B 1.1.1。 现在我们正在开发项目A 1.2.0,它依赖于项目B 1.2.0也在开发中。 项目B 1.2.0的新集成构建由公共本地存储库中的CI服务器推送,因此,由于“更改”,每个人在发布后立即获得最新的集成构建。 假设Bob正在开发一个项目A的新function,需要对项目B进行一些修改; 他在他的本地私有存储库中发布了一个新的shapshot Project B 1.2.0,并且他在构建中被选中,因为它比公共存储库中的更新。 到目前为止一切都好。 但是如果Alice在Project B中提交了一些东西,那么CI服务器会在公共仓库上推送一个新的1.2.0,这比Bob在本地的仓库更新。 现在Bob获得了覆盖其本地更改的通用版本。 当然我可以使用不同的名称(使用属性文件以一种聪明的方式,名称不必以ivy.xml结尾),类似于Bob的1.2.0_snapshot,只要Bob需要本地版本,然后切换回1.2.0当通用版本没问题时。 但是有没有办法强制使用状态为“快照”的工件(这将始终是本地构建的状态)而不是具有“集成”的工件(由CI服务器生成的工件将始终具有该状态)或更高? 我尝试了“latest.snapshot”但它需要集成版本,如果更新的话。 处理这种模式的最佳方法是什么?

在没有maven或ant的Jenkins中自动运行JUnit测试

我目前正在与Jenkins建立一个持续集成工具。 我希望每次构建时都运行JUnit测试。 我的问题是,没有一个将要测试的项目使用maven或ant。 所以我想知道是否可以在没有maven或ant的情况下运行这些测试,如果是,我该怎么做? 提前感谢您的回答

是否有可能仅从一个特定分支触发Jenkins?

我的情况如下:我在回购中有三个分支:master,dev和staging。 我为这些分支中的每一个分配了一个工作,在Jenkins的“Branches to build”部分中进行了配置。 origin / master,origin / dev,origin / staging。 只要存储库挂钩发生了对存储库的更改,Bitbucket就会触发构建工作。( https://confluence.atlassian.com/display/BITBUCKET/Jenkins+hook+management )。 但是,当我推动掌握时,所有工作都开始构建,而其他工作也是如此。 我希望Jenkins“掌握”工作只有在我推动掌握分支时才能建立。 jenkins“开发”工作开发分支。 jenkins“分期”工作到开发阶段。 有没有办法控制这种行为?

如何在jenkins上跨多个项目构建作业管理常见的ant构建脚本?

我有一组来自不同git存储库的java项目,我想用Jenkins构建它们。 它们都共享相同的ant构建脚本,该脚本通过ant导入机制使用项目特定的配置部分(例如编译类路径)。 目前我手动共享,但这对于公共部分的更改非常容易出错。 所以我的问题是:在jenkins服务器上跨多个构建作业管理共享ant构建脚本的好方法是什么?