问题标签 [hudson]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 在 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 配置就可以了——我不喜欢这样 :)
我真的很想听听其他人的经历,所以我可以决定如何处理这个问题。
编辑:另一种选择可能是使用更了解 Eclipse 项目和/或项目集的 CI。我们不信教——这只是让东西运行起来而不必自己做所有事情的问题。巡航控制可能是一个更好的选择吗?其他的?
编辑:发现 ant4eclipse 有一个“团队项目集”设施。 http://ant4eclipse.sourceforge.net/
编辑:使用 ant4eclipse 和 ant-contrib ant 扩展来构建一个完整的工作区作为 sjgned 可运行 jar 文件,类似于 Eclipse 3.5M6 中的可运行 Jar 工具。我仍然依赖 Eclipse 来创建初始的空工作区,并提取 ProjectSet,所以这是下一个障碍。
编辑:以双重配置结束,即 Hudson 从 CVS 中提取与 ProjectSet.pdf 文件中列出的相同的模块集(需要具有相同的标签),从而使它们彼此相邻。然后 ant4eclipse 可以很好地与嵌入在主模块中的 projectSet.psf 文件配合使用。警告:必须手动更新 Hudson 中的模块列表,并且之后似乎需要手动清理工作空间,以便让 Hudson “发现”现在比以前有更多的项目。几个月来,这对我们来说效果很好,但是让所有的东西都在 ant 文件中工作是相当乏味的。
编辑:在哈德逊的 CVS 项目中,使用 ant4eclipse 和 Ctrl-A、Ctrl-C 在项目面板中使用 Ctrl-V 的“使用团队项目”已经证明工作得很好,我们可以忍受(对于成熟的项目,这个很少改变)。我正在等待 ant4eclipse 1.0 的发布——http://www.ant4eclipse.org/ ,目前处于里程碑 2——看看有多少本土功能可以被 ant4eclipse 东西取代。
编辑:ant4eclipse 在 M4 中是截至 20100609 的,所以http://www.ant4eclipse.org/node?page=1上的时间表有所下滑。
编辑:在长时间使用我们的 ant4eclipse 方法后,我的结论是构建脚本变得非常粗糙并且难以维护。Team ProjectSet 工具(ant4eclipse 用来定位项目)也适用于基于 CVS 的存储库,但在我们迁移到 git 之后就不行了(这本身就是一件大事)。新项目很可能基于 maven,因为这在 Jenkins 中得到了很好的支持。
build-process - 如何配置 Hudson 为每个构建发送电子邮件,而不仅仅是那些改变项目状态的?
我最近将我的 CI 服务器从旧版本的 CruiseControl 迁移到了 Hudson。我错过 CruiseControl 的唯一功能是能够接收每个构建的电子邮件构建通知,而不仅仅是那些导致项目状态发生变化的通知。
我对所有成功构建的构建通知特别感兴趣。
有人在做这个吗?还是我该学习 Hudson 插件开发了?
hudson - 如何确保在 Hudson 中一次只运行某一类别的工作中的一个?
我使用 Hudson 来自动化测试一个非常重要的产品。我希望我的测试主机能够运行理论上支持的尽可能多的并发构建,但 excel 测试除外,它必须在任何时候每台机器运行一个。可以同时运行任意数量的非 excel 测试,但是每台机器一次最多只能运行一个 excel 测试。
背景:
我的大多数测试都是普通的单元测试——我可以轻松地并行运行这种东西。不幸的是,我的单元测试计划中的一个重要且耗时的部分包括已在 Excel 中实现的测试。
您可能认为在 Excel 中实现测试很疯狂——实际上有一个重要原因:我们的大多数用户通过 Excel 访问我们的系统。Excel 有自己古怪的数据处理方式,因此保证我们的东西适用于 Excel 用户的唯一方法是从字面上实现我们的 reg-test 我们的应用程序 Excel。
我编写了一个测试运行工具,它可以让我轻松启动一组 excel 测试:每个测试都是一个 .xls 文件。每个组都是一个充满 excel 文件的文件夹。我有大约 30 个组需要运行以进行端到端测试。我的工具将每个测试的结果转换为 Hudson 能够理解的 JUnit 样式 XML。测试使用 pywin32com 库来自动化 excel。当它们自己运行时,它们是可靠的。
我有一组专门用于运行测试的计算机。每台机器都是四核的,理论上可以同时运行很多东西。不幸的是,我发现 COM 不能用于一次安全地控制每台机器超过 1 个 excel。
也就是说,如果第二个构建星尝试通过 COM 与 Excel 对话,它可能会干扰已经运行的构建并导致两个测试都失败。
我可以在机器允许的范围内运行尽可能多的其他非 excel 进程,但我需要找到一种方法,以便 Hudson 不会尝试在任何一台机器上同时启动超过 1 个需要 excel 的进程。
php - 如何将 phpunit 与 Hudson CI 集成?
我们正在考虑从 phpundercontrol 切换到 Hudson(它看起来有一些非常酷的功能!)但我不知道如何让 phpunit 日志显示出来。
我的 phpunit 在 Hudson 中使用 ant 运行良好,并且 --log-xml 将 phpunit.xml 放入该构建的相应 builds/ 文件夹中。但是我不知道如何让它显示在构建中,以便我们可以看到运行的测试以及失败的测试(如果有的话)。
在我弄清楚之后,接下来将是获得覆盖率、指标和 api :)
对于在 HTML 上生成它的任何东西来说,它似乎应该是微不足道的,例如告诉哈德森“对于这个项目,为每个构建显示一个到 'API' 的链接并链接到 builds/$BUILDNUM/api/index.html”。
git - 你如何设置 Hudson 来使用 Git?
我正在尝试将 Hudson 设置为 CI 服务器,但我无法让一切正常工作。我正在尝试使用“官方”git 插件。我还没有对 stephenh 开发的备用插件进行任何测试。
我想知道是否有其他人让 Hudson 使用 Git 或任何 CI 服务器使用 Git。如果是这样,如何以及使用什么配置。
相关信息是我在 Hudson 1.277 上,我正在使用 Git 1.6.1.1.230.gdfb04 和 Git Plugin 0.5,都在 windows 平台上。
提前致谢!
svn - 图形代码分析
我将 SubVersion 与 Hudson 结合使用,我喜欢显示单元测试、构建时间、磁盘使用量如何随时间增长的功能。我相信代码指标可以对代码库进行初步评估 - 在从新客户开始时特别有用。是否有任何工具可以执行以下操作
1)从日期/标签开始获取源代码的每个修订版
2)构建它
3) 运行代码分析
4) 运行测试
5)存储详细结果(在某种Sql数据库中)
6) 重复直到不再修改
7) 整理并呈现结果
您可以看到 hudson 本身的摘要输出,但这并不能说明单个文件,以及它们如何随时间变化。
build-process - Hudson 如何删除我的构建创建的工件?
我们组织的自定义构建工具会写出大量中间数据,如果 Hudson 能够检测到哪些文件是作为构建的一部分创建的并将这些文件存档,我会很高兴。我不确定它是否已经这样做了,但是如果确实如此,则没有用户可见的解释,当然删除构建并不会删除其输出。
详细来说,这就是我想要的。假设我从一个裸工作区开始。在构建 1 之后,我有这个:
现在,我运行构建 2:
源代码被检出到ws/src
每个构建中;有一个自定义结帐过程,所以我不能使用 svn RCS 方法:/。
当我删除构建时,我想删除来自该构建的所有内容。我可以这样做吗?
.net - CI:Hudson with .Net vs CruiseControl.Net
我在一家希望集成 CI 服务器的 .net 商店工作。从我所见,Hudson 似乎是最受欢迎的选择。考虑到我们是一家仅限 .net 的商店,Hudson 会不会出现 CC.NET 不会遇到的任何障碍?
java - 用于 Java 项目的 Hudson 和 CruiseControl 有什么区别?
我认为标题总结了它。我只是想知道为什么其中一种更适合来自 Svn 的 Java 项目的持续集成构建。
c# - 我如何以及为什么要设置 C# 构建机器?
我正在与一个小型(4 人)开发团队合作开发一个 C# 项目。我建议设置一台构建机器,它会在夜间对项目进行构建和测试,因为我知道这是一件好事。麻烦的是,我们这里没有很多预算,所以我必须向当权者证明费用是合理的。所以我想知道:
我意识到这是一个非常大的话题,而我才刚刚开始。我在这里找不到这个问题的副本,如果那里有我应该得到的书,请告诉我。
编辑:我终于让它工作了!Hudson 非常棒,FxCop 表明我们认为实现的一些功能实际上是不完整的。我们还必须将安装程序类型从 Old-And-Busted vdproj 更改为 New Hotness WiX。
基本上,对于那些关注的人来说,如果您可以从命令行运行您的构建,那么您可以将其放入 hudson。通过 MSBuild 从命令行运行构建本身就是一个有用的练习,因为它强制您的工具是最新的。