我使用ant exec任务来执行xcodebuild来构build一些iOS项目hudson。 我想能够创build脚本的方式,不允许指定sdk版本,因为在哈德逊奴隶或我的iOS项目上更新sdk所有我的项目失败…. 在SDK中有一个很好的select,因为在目标设置Base SDK – Latest iOS 4.2 我不必在xcodebuild命令中提供-sdk参数,但是(我认为)它是从xcode项目中取得的,因为这样做会导致在提交期间有人可能会意外地从模拟器切换到设备。 我需要一些不变的东西。 我宁愿不使用envvariables,因为我希望能够在开发机器上运行这个ant任务,并且不想在所有机器上设置它。 不幸的是xcodebuild -showsdks只给出: Mac OS X SDKs: Mac OS X 10.4 -sdk macosx10.4 Mac OS X 10.5 -sdk macosx10.5 Mac OS X 10.6 -sdk macosx10.6 iOS SDKs: iOS 4.2 -sdk iphoneos4.2 iOS Simulator SDKs: Simulator – iOS 3.2 -sdk iphonesimulator3.2 Simulator – iOS 4.0 […]
我一直在开发一个工作stream程来练习一个PHP项目的大部分自动化的连续部署周期。 我想就这个工作stream程中的可能的stream程或技术瓶颈提出一些反馈意见,改进build议,以及如何更好地自动化和提高我的团队的易用性。 核心组件 : Hudson CI服务器 Git和GitHub PHPUnitunit testing Selenium RC Sauce OnDemand用于Selenium RC自动化,跨浏览器,云testing 用于自动化testing服务器部署的Puppet Gerrit的Git代码审查 Gerrit Trigger Hudson 编辑 :我已经改变了工作stream程graphics,以考虑到ircmaxwell的贡献:删除PHPUnit的Selenium RC的扩展,并运行这些testing只作为QC阶段的一部分; 增加一个QC阶段; 在代码审查之后但在合并之前移动UItesting; QC阶段之后进行合并; 合并后移动部署。 该工作stream程graphics描述了该过程。 我的问题/想法/关注随之而来。 我的关注/想法/问题 : 使用这个系统的总体困难。 参与时间 使用Gerrit困难。 难以雇佣Puppet 。 稍后我们将在Amazon EC2实例上进行部署。 如果我们现在正在使用Puppet设置Debian软件包并部署到Linode切片,那么Linode上的工作部署是否有可能在EC2上突破? 我们是否应该从一开始就在EC2上进行构build和部署? 另一个问题是: EC2和Puppet 。 我们也在考虑使用Scalr作为解决scheme。 为了避免Puppet的开销,为了避免这种情况的发生,让Scalr投资于Scalr会有多大意义? 我有一个次要的(哈!)在这里关心成本; Seleniumtesting不应该经常运行, EC2构build实例将全天候运行,但对于像5分钟构build这样的东西,花费一个小时的EC2使用似乎有点多。 合并时可能的stream程瓶颈。 “A”可以移动吗? 积分 :这个工作stream程的一部分是由Digg的真棒张贴在持续部署的启发 。 上面的工作stream程图是受Android OS项目启发的 。
我已经在同一台机器上安装了Xcode 3.2和Xcode 4.0.2,它使用Hudson进行自动CI(持续集成)构build。 当我说这两个安装,我的意思是,我可以同时使用Xcode 3和Xcode 4或互换。 他们都在机器上,因为我做了一个Xcode 4的自定义安装而不覆盖Xcode 3(据说)。 对'xcodebuild'的命令行调用是否调用Xcode 3或Xcode 4? 这个问题甚至有意义吗? 有人可能会或可能不知道的话题是要求一些项目build立3和一些4。 如果是这样,我该如何强制它使用3或4? 或者,Xcode 3的“xcodebuild”存储在哪里,Xcode4的“xcodebuild”存储在哪里? 如果有的话,我可以在我的构build脚本中使用不同的path。
我有一个单独运行在开发机器上的java junittesting。 我们还有一个hudson作业,在Java 1.5的Mac OS X 10.4节点上运行所有通过ant调用的testing。 直到最近,testing正在传递哈德森版本,但现在(没有相关的代码更改)每次都有一个testing失败,出现以下错误: 错误信息 分叉Java VMexception退出。 请注意,报告中的时间不会反映VM退出之前的时间。 堆栈跟踪 junit.framework.AssertionFailedError:分叉Java VMexception退出。 请注意,报告中的时间不会反映VM退出之前的时间。 谷歌search显示许多其他人似乎遇到了同样的问题,但在那里我找不到任何答案。
我最近将我的CI服务器从旧版本的CruiseControl迁移到Hudson。 我从CruiseControl错过的唯一function是能够接收每个构build的电子邮件构build通知,而不仅仅是那些导致项目状态发生变化的通知。 我特别感兴趣的是build立所有成功构build的通知。 有人在这里做这个? 还是我该学习Hudson插件开发的时候了?
我select使用“jenkins自己的用户数据库”安全领域的用户login,因为我不能在我的公司使用LDAP。 而当您决定将主机名或端口号更改为其他内容时,Google的OpenID有问题。 为了我的安全,我使用“基于项目的matrix授权策略”模式。 但我似乎无法创build自己的组,并将用户添加到组中以pipe理权限。
Scala有哪些可用的代码覆盖工具? 我有斯卡拉规格testing和哈德森持续集成设置。 有什么我可以挂钩到这个设置来衡量和跟踪代码覆盖率?
我最近更新了我的一个哈德森版本的configuration。 构build历史不同步。 有没有办法清除我的编译历史? 谢谢,麻烦您了
我正在考虑使用GitHub作为我们的代码审查的主要工具。 像在线评论和比较视图这样的function,似乎有许多像Gerrit这样的工具提供的function。 有其他人使用过GitHub吗? 如果是这样,你的工作stream程是什么? 你有什么经验这样做,正面和负面? 当我对此有所了解,并理清什么最适合我们时,我将编辑我的问题,分享我自己的build议工作stream程。 编辑build议的工作stream程 步骤0.使用awesome reviewth.is 设置一个post-receive hook 。 然后: 像平常一样commit -a -s ,但在提交消息中追加#reviewthis @username 。 如果构build失败,则审阅将被跳过,直到构build被恢复。 审阅者对逐行或在文件级别进行提交的评论。 GitHub会自动通知评论的评论者。 审阅者通过电子邮件通知审阅者,当评论与审阅摘要一起完成时。 Reviewee回复GitHub中的评论者评论,允许项目访问代码评论的历史logging。 我最大的问题是步骤2和步骤4/5。 Gerrit很好地工作,除非构build成功,否则不要求评论; 我想在GitHub中做到这一点。 步骤4/5也有可能让人讨厌(多封电子邮件),并减less审查过程的自动性(需要通过电子邮件发送摘要)。 如果有帮助,我们使用Hudson作为我们的构build服务器。 对这些问题的任何想法也会有所帮助。
我目前正在使用jenkins / hudson进行持续集成,主要是C ++项目。 我们有单独的项目为主干和每个分支。 另外,Java代码还有一些相关的项目,但是现在对于这些项目的设置是相当基本的(尽pipe我们可能会做更多的工作)。 C ++项目执行以下操作: build立一切与select是否重新configuration,做一个干净的build设,或使用一个新的结帐 有select地构build并运行所有testing 可以使用Valgrind的memcheck运行所有testing 运行cppcheck 生成doxygen文档 发布报告:unit testing,valgrind,cppcheck,编译器警告,SLOC,开放任务和代码覆盖(使用gcov,gcovr和cobertura插件) 每晚或按需部署代码到testing环境和软件包存储库 一切都可以configuration为自动构build和可选的按需构build。 在下面,有一个bash脚本来控制这个,这更多的取决于我们的构build系统,它使用automake和autoconf以及自定义的bash脚本。 我们开始使用Hudson(当时),因为这是Java人使用的,我们只是想每晚构build。 从那以后,我们增加了更多,并继续增加更多。 在某些方面哈德森是伟大的,但肯定是不理想的。 我已经看过其他的解决scheme,唯一看起来可以替代的是buildbot。 在这种情况下可以改善吗? 自从我们已经使用Hudson以来,投资是否值得? 为什么? 编辑 :有人问为什么我没有find哈德森/jenkins是理想的。 简而言之,一切都可以改善。 我只是想知道,如果jenkins是我用例的最佳解决scheme,或者是否有更好的东西(buildbot?),那么从长远来看,即使有新的需求出现,也会更容易维护。