我应该怎样做才能使断言不再阻碍自动测试?
我们运行自动化 nunit 在我们的C#项目上使用Hudson/Jenkins在几台虚拟机上使用Hudson/Jenkins进行测试,这些虚拟机在某些服务器上主要无人看管.测试涉及启动几个交换数据的过程,其中一个是Nunit本身,其他过程是由单位测试创建的. 有时,其中一位开发人员会检查触发 断言 (Debug.Assert())的东西.然后,这会弹出一个消息框,询问用户该怎么做.通常,这些发生在单位测试创建的"外部"过程之一中.他们将 阻止该过程 在其他过程放弃的同时,因为它们无法交流.但是,由于系统的性质, 下一个测试也将失败 ,只要一个过程被阻止,等待某人单击该消息框. 我被告知您可以更改.NET程序的设置,以便断言不会弹出消息框.理想情况下,该过程只会为詹金斯(Jenkins)记录一些东西. 那么,我该怎么办才能关闭那些交互式断言对话? 解决方案 您需要实现System.diagnostics.tracelistener,它不会在失败上弹出对话框(即您可
0 2024-04-16
编程技术问答社区
如何从Jenkins运行NUnit测试?
我希望为C#应用程序,每晚和每次提交SVN进行自动Nunit测试. 这是Jenkins-Ci可以做的吗? 是否有在线教程或如何记录我可以看的类似设置的方法? 解决方案 我需要做您的工作,这是我设置Jenkins的方式: 将Nunit插件添加到Jenkins 在您的项目中,转到配置> 构建 - > 添加构建步骤 在下拉列表中滚动至 - > 执行Windows Batch命令 确保在MSBUILD步骤之后放置此步骤 添加以下内容,替换变量: 单DLL测试: [pathtonunit] \ bin \ nunit-console.exe [pathtotestdll] \ selenium.tests.dll /xml = nunit-result.xml 使用 Nunit Test Projects : [pathtonunit] \ bin \ nunit-console.exe [pathtotests] \ selenium.tes
0 2024-04-11
编程技术问答社区
我如何以及为什么要设置C#构建机?
我正在与一个C#项目的小型(4人)开发团队合作.我建议建立一台构建计算机,该机器将在每晚进行该项目的构建和测试,因为我知道这是一件好事.麻烦是,我们这里没有很多预算,因此我必须证明自己的权力费用是合理的.所以我想知道: 我需要什么样的工具/许可?目前,我们使用Visual Studio和Smart Assembly来构建,以及用于源控制.我是否需要其他东西,还是在运行自动脚本的cron工作等效? 除了迹象表明构建损坏之外,这究竟会让我得到什么?我是否应该在此解决方案(SLN文件)中设置这些脚本运行的测试项目,以便我可以测试特定的功能?目前,我们有两个这样的测试,因为我们还没有时间(或坦率地说,经验)进行良好的单位测试. 我需要什么样的硬件? 一旦构建完成并测试了,将堆积在FTP网站上或有其他内部访问的方法是一种常见的做法?这个想法是,这台计算机是 构建的,我们都去了,但是如果需要的话,可以进行调试. 我们应该多久做一次这种构建? 如何管理空间?如果我们每晚建造,我们是否应该围绕所
0 2024-04-11
编程技术问答社区
哈德逊作业能否在不拉动代码的情况下轮询SCM?
我有一项我想每次提交存储库时都想运行的工作.我想避免将此代码拉下来,我只需要通知构建触发器.因此,是否有一种方法可以在构建时不在您的SCM中提取某些存储库,或者是一种对不在scm中的事物进行调查的方法? 解决方案 您可以使用触发您的哈德逊工作. 其他解决方案 由于您想避免更改SVN,因此必须写一份经常执行的作业(可能是每5分钟).该作业使用Windows Bach或Shell脚本任务运行SVN命令,以获取有关分支的当前修订版.如果发生更改,您可以将作业的状态设置为不稳定.不要使用故障,因为您无法区分实际故障和存储库更改.我认为有一个插件可以根据您输出的内容来设置作业状态. 您可以使用电子邮件扩展插件在每次修订更改时发送电子邮件.您可以从最后一次(或最后一个成功或不稳定)的工作中获取修订号.您可以归档包含作业上修订号的文件,也可以使用Description Setter插件将作业描述设置为修订版.请查看Hudsons Remote API,以了解如何从上一份工作中获取
2 2024-04-05
编程技术问答社区
Hudson为不同的触发器提供不同的构建目标
我想为周期性构建和通过轮询SCM触发的构建目标有不同的构建目标. 更具体:想法是,每晚构建应调用" MVN验证",其中包括集成测试,而正常构建调用" MVN测试",该测试只是执行单位测试. 有什么想法可以使用哈德森实现? 欢呼 克里斯 解决方案 您可以创建两个作业 - 一个计划,另一个进行了投票. 在计划中,您可以指定调查的其他Maven目标. 其他解决方案 Raghuram的答案是直截了当的.但是您也可以有三个工作.前两个进行触发,并将Maven目标作为参数传递到第三个工作中.听起来像是很多混乱,并且在某个时刻.但是,如果您有很多配置要做(尤其是需要定期更改配置),这将有所帮助.将配置正确的两个作业都将有助于.配置不仅包括构建步骤,还包括所有报告的收获,构建清理,通知,触发下游作业的触发,……另一个优势是,您不需要同步这两个作业并行运行(如果导致问题). 不理解我,我的第一个冲动会去做两个工作,这具有自己的优势.夜间构建的历史记录将全天包含(实际
0 2024-04-05
编程技术问答社区
哈德逊的依赖性
我已经设置了我的Hudson Job A.工作a取决于工作B和C.我已经将它们设置为"构建其他项目".这效果很好,尽管每个作业都在我的工作区(默认结构)中的单独目录中.但是我需要工作B和C的工作空间(根文件夹). 我考虑了两种方法: 更改作业A的工作区,并通过"触发参数化构建在其他项目上"将变量推到作业,然后使用ANT构建脚本将它们复制到该位置,因为我找不到一个选项来更改文件夹的位置B或C应该去 作为作业A的一部分,触发作业b,然后是构建脚本的C. . 对我来说,理想的方法是使用antsvn或类似的东西使用蚂蚁构建脚本并触发作业B和C.但是我找不到一个很好的例子. 我想要这种方式很简单的原因 - 作业B是CMS,对于工作A和Job C的必不可少蚂蚁). ,或者也许有更好的方法来管理这样的依赖.任何帮助都将不胜感激. 我希望这是有道理的. 解决方案 将工作" B"和" C"视为生产"伪像""工作"的需求.然后,您要做的就是导入工作" B"和"
2 2024-04-05
编程技术问答社区
配置Hudson/Jenkins的暂存和生产系统
如何将Hudson/Jenkins配置为使用相同配置的生产和分期部署? 我有一个在Jenkins中配置的构建和部署工作流程以进行生产推动.现在,我需要使用相同的配置进行登台推动,希望几个文件夹和DB名称会更改以反射阶段. IE.从/var/prod/html到/var/stage/html和db从companyname_table到companyname_table_stage. 我不想进行配置的副本,因为我可能必须在一个地方更改配置,然后我必须对每个副本进行重复更改.理想情况下,我想通过一些参数 来尝试此事 解决方案 您可以配置要进行参数化的项目,并添加一个参数,指定在哪里部署到(即分期或生产).您如何做到这取决于您使用的构建系统.例如.如果您使用的是ANT,则该参数将作为环境变量暴露,因此您只能说一个变量,说明其分期是否与生产,然后在ANT脚本中,您将属性设置为/var/prod/html和或companyname_table或/var/stage/html和com
2 2024-04-05
编程技术问答社区
参数化的Hudson Build能否覆盖svn修订版?
我想设置从特定修订中重建的能力.默认值将是头部,用户可以重建旧版本(已删除).我仍然想利用哈德逊有关SVN等的所有报告 有一个很好的方法吗? 解决方案 我会尝试的.不幸的是,我没有时间验证我的方法. 一种快速的方法是使用参数,如果您想踩踏,则留有空白.要查看较旧的修订版,请输入"@"以及修订号作为参数的值. 您不仅需要将参数添加到颠覆结帐中的URL中.我不确定正确的语法.我怀疑这是${Parameter_Name}. 让我们知道这是否有效. 其他解决方案 您是否尝试过 subversion reaker Manager 插件?听起来像您要寻找的. 其他解决方案 我提出了一个请求: http://issues.hudson-ci.org/brow/browse/browse/hudson-hudson-hudson-44412 ,但没有任何地方. 我们这样做的方式是让脚本调用svn.exe获取我们想要的修订.您可以将修订ID作为参数传
2 2024-04-05
编程技术问答社区
如何在Jenkins中获得一个作业的相应构建工件?
我使用 hudson.cli.cli jar 创建Jenkins作业.我选择了"存档伪像" 在"后构建步骤" 部分中.它列出了每个成功构建上的工件.我正在使用 jenkins远程访问api http://localhost:8080/job/job_name/api/json获取有关 jobs 的详细信息. http://localhost:8080/job/job_name/job_number/api/json获取有关构建的详细信息. 当我删除构建时,未删除相应的存档文物.我想确保它们被删除. 当我将jenkins远程访问API http://localhost:8080/job/[job_name]/[job_number]/api/json用于构建时,它将返回JSON数据,其中包含所有以前存档的文物(其他成功的构建伪像),并使用此(运行构建)构建伪像.我如何获得构建的相关工件(成功的构建应返回其工件,而不是所有以前的成功伪像).有任何建议或想法吗? 解决方案
2 2024-04-05
编程技术问答社区
多模块项目的Maven站点无法解决依赖性问题
我想将连续的集成工作(哈德逊)分为两个步骤. (因为一起构建和报告的运行时间需要太长.) 在第一份工作中,我成功地构建了我的 Multi Module Maven项目,并成功地使用了" MVN软件包". 然后,我将工作区复制到另一个位置,然后尝试仅使用目标"站点"和/或Findbugs/CheckStyle/PMD再次构建项目以创建报告. 但这不起作用! Maven 无法解决我的子模型的依赖性. (但是所有罐子都在其目标文件夹中可用.) 示例: 我的结构看起来像这样: 父母 A b c D 项目C作为依赖项项目b. 当我使用" MVN站点"构建所有内容时,它会为项目A和B生成所有报告.但是在项目C上停止了错误消息"无法解决项目B的依赖关系". 但是项目B已经建立了" MVN软件包". IE.我可以在其目标文件夹中找到项目B的JAR文件. 有什么办法可以在没有" MVN安装"的情况下从子模块B中解析依赖性? (我不想在我的CI服务器上这样做.我担心这对
2 2024-04-05
编程技术问答社区
用groovy脚本构建hudson失败
我在哈德森(Hudson)构建上进行了几个后构建动作.它们目前是bash脚本,如果我想让它们失败,我只是返回一个非零值.有没有办法从另一种脚本语言(例如Groovy)中失败构建?我是否只编写一个也返回非零的脚本?还是我需要一个特定的插件来启用此操作? 谢谢 杰夫 解决方案 groovy hove noreflow noreflol "> Groovy Postbuild placein 似乎在是您需要的,并且具有称为buildFailure()的方法,该方法将构建结果设置为失败. 其他解决方案 在Groovy脚本中以编程方式执行此操作的一种方法是: throw new hudson.AbortException("Something was in my eye...") 其他解决方案 如果您的邮政构建操作是标准构建步骤(例如Shell脚本).以非零值退出该外壳脚本是足够的.我不知道所有脚本语言是否允许您返回非零的返回值,然后将成为脚本的返回值(如果您不调
0 2024-04-05
编程技术问答社区
哈德逊失踪的触发器构建远程选项
我正在尝试在哈德逊上设置post Commit build build bualts bualts bualtson. 我已经安装了很多插件,谷歌搜索了一段时间,但没有成功.这个问题是在(http://stackoverflow.com/questions/2469831/hudson-build-on-url-token)中解决的,但这对我不起作用. 我的Hudson版本是Hudson Ver. 1.378. 下注 解决方案 如果在Jenkins实例上未启用安全性,则该选项不可用. 但这是因为您可以做:http://jenkinsserver:8080/job/TestJob/build?delay=0sec 其他解决方案 我在哈德森1.381上,我有这个选项在构建触发器下.因此,请告诉我们有关您配置的更多信息.您是否启用了安全性(在哈德森,而不是工作级别)?您检查了日志文件吗?
0 2024-04-05
编程技术问答社区
如何在MultiJob插件中传递一个构建号?
Multijob Plugin 我的构建过程,但是我之前必须解决一个问题:有三个作业A,B和C.SVN触发作业A和B(并行执行),而Job C开始了A和B完成.作业C需要作业A和B的工件作为输入. -> Job A (with A.zip) Trigger -> Job C (use artifacts A.zip and B.zip) -> Job B (with B.zip) 使用 Multijob插件很容易,但是很容易,但是很容易,但是我不知道如何在工作中获得工作A和B的相应工件.我可以将构建数字传递给工作C(buildnr(a)!= buildnr(b))吗?还是有一种更聪明的方法来解决问题? 解决方案 多job插件设置下每个工作的环境变量(代码): _BUILD_NUMBER _BUILD_RESULT 其中JOBNAM
2 2024-04-05
编程技术问答社区
在SVN提交时触发Hudson构建
我已经设置了一个版本控制系统(颠覆),开发人员将使用该系统来提交和更新其代码(假设其地址为https://server/svn/project).只有身份验证的用户才能访问Project的SVN. 另一方面,我已经安装了哈德森(Hudson)作为项目的连续集成服务器(项目的地址为server:8080/job/project). 我想实现以下内容: Hudson在有SVN提交时会自动触发Hudson. 邮件将发送给相应的开发人员(所承诺代码未构建的代码的开发人员),这意味着当用户a承诺未构建的代码时,只有用户a收到包含通知的电子邮件. 我已经为哈德逊用户设置了基于矩阵的授权,因为我不想向任何人开放. 我已经看到了一些有关post-commit挂钩的建议,但是直到现在,它们都没有工作. 有人可以建议在这两个问题上怎么办吗?特定步骤将不胜感激. 解决方案 根据,哈德逊需要对您的SVN存储库进行调查,以检测变化并触发构建. 但是,可以从SVN
2 2024-04-05
编程技术问答社区
为使用最新的SDK,xcodebuild的参数。
我使用蚂蚁exec任务执行XcodeBuild来构建一些iOS项目Hudson.我希望能够以允许不指定SDK版本的方式板条脚本,因为在Hudson Slave上更新SDK或我的iOS项目之后,我所有的所有项目都失败了.... Xcode中有一个不错的选择,因为SDK 4.2在目标设置Base SDK - Latest iOS 中 我不必在XcodeBuild命令中提供-sdk参数,但是(我认为)它是从Xcode Project中获取的,这很糟糕,因为那时有人可以在提交过程中意外将目标从模拟器更改为设备. 我需要恒定的东西.我希望不使用Env变量,因为我希望能够在开发机上运行此蚂蚁任务,并且不必在所有机器上重新定位它. 不幸的是xcodebuild -showsdks仅给出: Mac OS X SDKs: Mac OS X 10.4 -sdk macosx10.4 Mac OS X 10.5
4 2024-04-04
编程技术问答社区
Maven + Mercurial的构建编号
我无法弄清楚如何将Mercurial修订ID放入我的Maven构建中(理想情况下,我希望它在我的罐子和战争的清单中). 我能找到的最接近的解决方案是: mvn -DbuildNumber=`hg id -i` 这对Windows或我的Hudson Server真的不起作用. 幸运的是,哈德森标记了我的构建,但如果构建也标有Mercurial Changset ID. ,我希望更多保证 解决方案 请看一下 以及接受答案的链接.基本上,您想做同一件事,除非要使用其他解决方案 不幸的是,hg id -i太长了.我创建了一个将计算准确的构建号码的脚本.但是,有两个例外.如果分支机构上没有以前的版本,则不能有效.如果本地存储库有更改,则它是无效的.在我的构建脚本中,每当发生这种情况时,我将构建标记为" x.x.unstable". 我使用rel_pattern在当前分支中的最后一个标签中拾取被标记为实际发行版的标签.然后,我通过跟踪该版本 +从该版本开始的"释放 +"
0 2024-04-04
编程技术问答社区
构建步骤之间的Jenkins-条件
我想使用Jenkins构建一个Maven项目.但是,仅当SVN存储库中的某个文件已更改(并且包含一个特殊键) 时,才必须构建项目 所以我的计划是通过两个构建步骤创建一个工作: 第一步执行了检查"条件"的外壳或python脚本. 第二步是实际的Maven构建 如果步骤1中的条件返回" true". 是否有可能这样做?好吧,我想如果不满足条件,我可以在第一个脚本中返回出口代码1.这将立即停止构建,但该工作将被标记为"失败".因此,这不是一个好主意,因为红色图标使我的用户感到恐慌; - ) 周围有其他想法? 欢呼, 弗兰克 解决方案 我们对自己的Jenkins设置做了类似的事情. 我们有一个"触发"工作,可以定期监视SVN.当SVN中发生更改时,触发作业将执行其构建步骤.其中一个构建步骤检查了代码的某些方面,并决定是否需要构建.如果有必要的话,它使用卷曲来启动"构建"项目的开始. "构建"项目获取源代码并进行构建 - 它不愿意弄清楚它是否需
0 2024-04-04
编程技术问答社区
哈德森:我如何使用参数化构建来进行svn检出和svn标记?
我正在Hudson V1.362中设置一个参数化的构建.我要处理的参数用于确定在颠覆中要结帐的分支. 我可以设置我的SVN存储库URL:https://my.svn.server/branches/${branch},它可以进行结帐,并且构建正好. 现在,我想在完成后标记构建.我正在使用SVN标记插件来实现Hudson.因此,我转到Hudson Project项目配置屏幕的底部,然后打开"在成功构建上执行颠覆标签". 在这里,我将标签基数设置为https://my.svn.server/tags/${branch}-${BUILD_NUMBER},这给了我有关未找到这些属性的错误.因此,我将它们更改为这样的环境变量用法:https://my.svn.server/tags/${env['branch']}-${env['BUILD_NUMBER']}和SVN标记插件很高兴. 现在的问题是,我的SVN存储库在此处使用${branch}语法和SVN标记插件barfs:
2 2024-04-04
编程技术问答社区
在Jenkins/Hudson中使用提交信息中的标签触发构建。
才有可能仅在某个字符串出现在提交消息中时触发哈德逊/詹金斯构建? 例如,我想触发一个构建,该构建将我的应用程序推出到开发环境中,通过写下提交消息: myproject-123 myclass.java中的npe #deploy:dev 关于Continuos部署的伟大谈话,但我找不到有关如何在哈德森中执行此操作的任何信息. 我更希望在哈德逊本身中具有这种行为,而不是在诸如"提交钩子或网络钩"之类的外部系统中. 解决方案 我不知道您可以将SCM消息解析为触发器的一部分.您有几个选择可以实现您想要的 的选择 写自己的Hudson SCM插件 将您的工作融合到建造管道中.第一个作业可以简单地在changelog.xml中查找该消息,以确定是否触发下一个构建. 如果您正在考虑建立构建作业的管道,请查看构建Pipeline-Plugin. 任何人都有更优雅的解决方案? 欢呼, 杰夫 其他解决方案 有一个插件,称为也许最简单的方法是使用
有没有使用持续集成设备的经验?
我们有一个连续的集成服务器运行我目前正在考虑购买一个可以将生成图像发送到的启用Wifi的数字图像框架.或重新利用旧笔记本电脑... 想法?经历? 解决方案 有许多解决方案(在下面的所有链接指向使用Hudson或现有插件的工作解决方案): 极端反馈小组散热器的视图,特别是对于满板的平板) 查看另一个就我个人而言,我体验了兔子,熔岩灯,球体和散热器视图.他们都做了工作,但我对熔岩灯有点偏爱.正如杰弗里(Jeffrey)在另一个答案中提到的那样,与蜡竞赛以解决构建失败确实很有趣:) 其他解决方案 无论您做什么,还请购买,但更严重的是,带有各种显示器的漂亮LCD很好.但是请考虑,如果您使用Twitter,您也可能想拥有一个Twitterbot,该twitterbot告诉所有员工构建状态(休息时间;等等). 其他解决方案 Christoph de Baene具有与交通信号灯的连续集成
0 2024-04-04
编程技术问答社区