Questions tagged «continuous-integration»

持续集成(CI)是指按频繁的计划对完整软件产品进行构建和自动测试:每天至少一次,每天多次,有时与每次签入版本控制系统后一样频繁。

6
竹与 哈德森(aka Jenkins)与任何其他CI系统[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 有人对哈德森和竹子有经验吗?对这些产品的相对优势和劣势有何想法? 好的,由于人们一直在提及其他CI产品,因此我将进一步对此进行介绍。这是我的一般问题。我想为一个新项目设置一个CI系统。该项目可能具有Java组件(WAR和JAR),一些python模块,甚至可能还有.NET组件。因此,我希望配置项服务器可以: 处理多种语言, 将工件部署到服务器(即,如果所有单元测试都通过,则部署战争。) 我还想将一些东西与一个不错的代码覆盖工具集成在一起。 美观的报告不错,但不是必需的。 出错时有多种通知机制。 我不担心托管。我将在本地服务器或Amazon实例上运行它。 另外,这也许是天上掉下来的馅饼,但是还有什么可以构建iPhone应用程序的吗?

5
在GitHub存储库中显示Travis构建状态
我记得最近在GitHub中浏览仓库时看到的是Travis的PR或commit的构建状态(但找不到位置)。我不是在谈论Travis构建状态图像,README.md而是真正的GitHub功能(带有友好的选中标记的绿色框)。 虽然我的提交基于Travis很好,但我想将结果显示在GitHub上(他们现在不这样做)。我想知道如何启用此功能。 更新 在此处找到一个示例 -看到绿色的小对勾标记说“ Travis-CI构建已通过”?


11
CruiseControl [.Net]与TeamCity进行持续集成?
我想根据实际经验,问您认为哪种自动化构建环境更好。我打算进行一些.Net和Java开发,因此我想拥有一个同时支持这两个平台的工具。 我一直在阅读并找到关于CruiseControl.NET(用于stackoverflow开发)以及TeamCity的支持,该支持基于不同OS平台和基于不同编程语言的构建代理。因此,如果您在这两个方面都有实践经验,那么您更喜欢哪一个,为什么呢? 目前,我最感兴趣的是该工具的易用性和管理性,更不用说CC是开源的了,而在您有大量项目要运行的时候,TC就需要获得许可(因为少量项目需要它)。 另外,如果还有其他工具可以满足上述要求,并且您认为值得推荐-请在讨论中随意添加。

14
Python的“漂亮”持续集成
这是一个..徒劳的问题,但是BuildBot的输出并不是特别好看。 例如,相比 phpUnderControl 詹金斯 哈德森 CruiseControl.rb ..及其他,BuildBot看起来..古老 我目前正在与Hudson一起玩,但是它是非常以Java为中心的(尽管使用本指南,我发现它比BuildBot容易设置,并提供了更多信息) 基本上:是否有任何针对python的持续集成系统,它们会生成许多闪亮的图形等? 更新:自从这次以来,Jenkins项目已将Hudson替换为软件包的社区版本。原始作者也已移至该项目。Jenkins现在是Ubuntu / Debian,RedHat / Fedora / CentOS等上的标准软件包。以下更新本质上仍然正确。詹金斯做到这一点的起点是不同的。 更新:尝试了几种选择之后,我认为我会坚持使用哈德森。完整性很好而且很简单,但是非常有限。我认为 Buildbot更适合拥有多个构建从属,而不是像我在使用它那样在一台机器上运行的所有东西。 将Hudson设置为Python项目非常简单: 从http://hudson-ci.org/下载Hudson 运行它 java -jar hudson.war 打开Web界面的默认地址为 http://localhost:8080 转到管理哈德森,插件,单击“更新”或类似内容 安装Git插件(我必须git在Hudson全局首选项中设置路径) 创建一个新项目,输入存储库,SCM轮询间隔等 如果尚未安装,请nosetests通过安装easy_install 在构建步骤中,添加 nosetests --with-xunit --verbose 选中“发布JUnit测试结果报告”并将“测试报告XML”设置为 **/nosetests.xml 这就是全部。您可以设置电子邮件通知,这些插件值得一看。我目前正在使用一些Python项目: SLOCCount插件可以计算代码行(并绘制图形!)-您需要单独安装sloccount 违反解析PyLint输出(您可以设置警告阈值,绘制每个构建中违反次数的图表) Cobertura可以解析coverage.py的输出。Nosetest可以在运行测试时使用收集覆盖范围nosetests --with-coverage(将输出写入**/coverage.xml)

10
如何为几种构建配置选择不同的app.config
我有一个包含MSTest集成测试的dll类型的项目。在我的机器上,测试通过了,我希望在CI服务器上也能进行​​相同的测试(我使用TeamCity)。但是测试失败了,因为我需要调整app.config中的某些设置。这就是为什么我想拥有一个单独的第二个app.config文件,该文件将保存CI服务器的设置。 所以我想有 / Sln /项目 app.config(我认为这是VS必需的) app.Release.config(这是一个独立的独立配置文件) 因此,如果我在CI的build config中选择Release configuration,我想使用app.Release.config文件而不是app.config 问题 对于简单的.dll类型的项目,这似乎并不简单。对于Web项目,我可以进行Web配置转换。我发现一个黑客如何为dll类型的项目进行这些转换,但我不是黑客的忠实拥护者。 问题 根据.NET项目(例如Debug,Release等)的构建配置,调整app.config文件的标准方法是什么?

12
如何通过我们的CI平台(哈德森)自动递增C#程序集版本?
我本人和我的小组在增加程序集版本号时都感到非常恐惧,我们经常以1.0.0.0版本发布程序集。显然,这会引起很多头痛。 通过CI平台,我们的做法越来越好,我真的很想将其设置为自动递增assemblyinfo.cs文件中的值,以便随着该程序集中的代码更改自动更新程序集的版本。 我之前曾设置过(在找到Hudson之前)通过msbuild命令行或命令行增加值的方式(不记得了),但是使用Hudson,它将更新SVN存储库并触发ANOTHER构建。当哈德森每小时轮询SVN时,这将导致缓慢的无限循环。 让Hudson增加版本号是个坏主意吗?什么是替代方法呢? 理想情况下,我的解决方案标准是: 在构建assemblyinfo.cs之前增加内部版本号 仅增加已更改的部件中的内部版本号。这可能是不可能的,因为Hudson每次执行构建都会清除项目文件夹 将更改后的assemblyinfo.cs提交到代码存储库中(当前为VisualSVN) 不会导致Hudson在下次扫描更改时触发新的构建 在脑海中解决这个问题,我可以很容易地通过批处理文件/命令提出解决方案,但是我的所有想法都会导致Hudson在下次扫描时触发新的构建。我并不是在寻找某人为我做任何事情,只是为我指明正确的方向,也许是让哈德森忽略某些SVN提交的技术,等等。 到目前为止,我发现的所有内容只是一篇说明如何自动增加版本号的文章,没有考虑可能会陷入无限循环的CI平台。


3
如何将msbuild升级到C#6?
我想在我的项目中使用C#6(零传播,其他功能)。 我已经在PC上安装了VS 2015,它的运行非常出色,并且可以像 var user = new SingleUserModel(); //all model fields are null var test = user.User?.Avatar?["blah"]; 但是,当我将项目推送到仓库并且CI开始构建它时,由于不受支持,构建失败?。 我也已经在CI服务器上安装了VS2015,但是看起来它没有使用它。我能做什么? CI-CruiseControl .NET使用 C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe

4
Jenkins CI管道脚本不允许使用groovy.lang.GroovyObject方法
我正在使用Jenkins 2来编译Java项目,我想从pom.xml中读取版本,我在遵循以下示例: https://github.com/jenkinsci/pipeline-plugin/blob/master/TUTORIAL.md 该示例建议: 似乎在访问文件系统时存在一些安全问题,但是我无法弄清楚它给了什么(或为什么)该问题: 我只是在做一些与示例不同的事情: def version() { String path = pwd(); def matcher = readFile("${path}/pom.xml") =~ '<version>(.+)</version>' return matcher ? matcher[0][1] : null } 运行'version'方法时出现的错误: org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: Scripts not permitted to use method groovy.lang.GroovyObject invokeMethod java.lang.String java.lang.Object (org.codehaus.groovy.runtime.GStringImpl call org.codehaus.groovy.runtime.GStringImpl) at org.jenkinsci.plugins.scriptsecurity.sandbox.whitelists.StaticWhitelist.rejectMethod(StaticWhitelist.java:165) at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onMethodCall(SandboxInterceptor.java:117) at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onMethodCall(SandboxInterceptor.java:103) at org.kohsuke.groovy.sandbox.impl.Checker$1.call(Checker.java:149) at …

18
“构建服务器”的意义是什么?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 2年前关闭。 改善这个问题 我没有在大型组织工作过,也从未在拥有“构建服务器”的公司工作过。 他们的目的是什么?开发人员为什么不在本地计算机上构建项目呢?是否有一些项目如此之大,以至于需要更强大的机器来在合理的时间内构建它? 我看到构建服务器有用的唯一地方是与构建服务器的持续集成,不断构建提交给存储库的内容。我只是还没有从事足够大的项目吗? 有人,请启发我:构建服务器的目的是什么?

9
Hudson还是Teamcity进行持续整合?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 我们是一家Java商店,正在寻找要使用的CI工具。无论哈德森和TeamCity的似乎是免费的,但TeamCity的似乎雨衣,并与更多的支持。 我想知道为什么人们仍然会使用哈德森,是否有人可以为/反对提供任何论据?

12
进行持续集成时最好的分支策略?
要进行持续集成时,最好使用哪种分支策略? 发布分支:在主干上开发,为每个发布保留一个分支。 功能分支:在单独的分支中开发每个功能,只有稳定后才合并。 同时使用这两种策略是否有意义?如您所言,您为每个版本都分支了,但同时也为大型功能而分支了?这些策略之一与持续集成是否更好地结合?使用不稳定的中继线时,使用连续集成甚至有意义吗?

4
.NET 4.0在CI服务器上的构建问题
有人设法在CI服务器上编译.NET 4.0应用程序而无需在CI服务器上安装Visual Studio 2010吗? .NET 4.0不存在SDK。在CI服务器上已安装.NET 4.0。Msbuild.exe适用于简单项目,并给出以下警告: (GetReferenceAssemblyPaths目标)-> C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.Common.targets(847,9):警告MSB3644:框架“ .NETFramework,Version = v4.0”的参考程序集找不到。要解决此问题,请为此框架版本安装SDK或Targeting Pack,或将您的应用程序重新定位到已为其安装SDK或Targeting Pack的框架版本。请注意,程序集将从全局程序集缓存(GAC)中解析,并将代替参考程序集。因此,您的程序集可能没有正确地针对您想要的框架。

7
Jenkins脚本化管道或声明性管道
我正在尝试将旧样式的基于项目的工作流转换为基于Jenkins的管道。在浏览文档时,我发现有两种不同的语法分别命名为scripted和declarative。例如declarative最近(2016年底)发布的Jenkins网络语法。尽管有一个新的语法版本,Jenkins仍然支持脚本化语法。 现在,我不确定这两种类型在哪种情况下是最佳匹配。scripted语法将很快被弃用吗?declarative詹金斯管道的未来会是这样吗? 可以分享有关这两种语法类型的一些想法的任何人。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.