c# - 我如何以及为什么要设置 C# 构建机器?

标签 c# build continuous-integration build-automation hudson

关闭。这个问题需要更多focused .它目前不接受答案。












想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post .

5年前关闭。



Improve this question




我正在与一个 C# 项目的小型(4 人)开发团队合作。我建议设置一台构建机器,它会在每晚进行项目的构建和测试,因为我知道这是一件好事。问题是,我们这里没有很多预算,所以我必须证明这笔费用的合理性。所以我想知道:

  • 我需要什么样的工具/许可证?现在,我们使用 Visual Studio 和 Smart Assembly 进行构建,并使用 Perforce 进行源代码控制。我是否需要其他东西,或者是否有相当于运行自动化脚本的 cron 作业?
  • 除了一个损坏的构建的迹象之外,这到底会给我带来什么?我是否应该在此解决方案(sln 文件)中设置将由这些脚本运行的测试项目,以便我可以测试特定的功能?目前,我们有两个这样的测试,因为我们没有时间(或者坦率地说,没有经验)进行良好的单元测试。
  • 为此,我需要什么样的硬件?
  • 一旦构建完成并经过测试,将构建放在 ftp 站点上或通过其他方式进行内部访问是一种常见的做法吗?这个想法是这台机器进行构建,我们都去它,但如果需要,可以进行调试构建。
  • 我们应该多久进行一次这种构建?
  • 空间是如何管理的?如果我们每晚进行构建,我们应该保留所有旧构建,还是在大约一周左右后开始放弃它们?
  • 还有什么我在这里没有看到的吗?

    我意识到这是一个非常大的话题,我才刚刚开始。我在这里找不到这个问题的副本,如果有一本我应该得到的书,请告诉我。

    编辑:我终于让它工作了! Hudson 非常棒,FxCop 表明我们认为已实现的某些功能实际上并不完整。我们还必须将安装程序类型从 Old-And-Busted vdproj 更改为 New Hotness WiX。

    基本上,对于那些正在关注的人来说,如果您可以从命令行运行您的构建,那么您就可以将其放入 hudson。通过 MSBuild 从命令行运行构建本身就是一个有用的练习,因为它强制您的工具是最新的。
  • 最佳答案

    更新:Jenkins是最新版本的 hudson 。现在每个人都应该使用 Jenkins。我会相应地更新链接。

    Hudson是免费的并且非常容易配置,并且可以轻松地在 VM 上运行。

    部分来自我的旧帖子:

    我们用它来

  • 部署 Windows 服务
  • 部署 Web 服务
  • 运行 MSTests 并显示与任何 junit 测试一样多的信息
  • 跟踪低、中、高任务
  • 趋势图警告和错误

  • 以下是 Hudson 支持的一些内置 .net 内容
  • MSBuild
  • NAnt
  • MSTest
  • Nunit
  • Team Foundation Server
  • fxcop
  • stylecop
  • compiler warnings
  • code tasks

  • 另外,上帝保佑你使用的是安全的视觉源,it supports that as well .我建议你看看 Redsolo's article on building .net projects using Hudson

    您的问题
  • :我需要什么样的工具/许可证?现在,我们使用 Visual Studio 和 Smart Assembly 进行构建,并使用 Perforce 进行源代码控制。我是否需要其他东西,或者是否有相当于运行自动化脚本的 cron 作业?
  • 答:我刚刚在运行 Windows 服务器操作系统的全新、修补安装的 VM 的全新副本上安装了 Visual Studio。所以你需要许可证来处理它。 Hudson 将自己安装为 Windows 服务并在端口 8080 上运行,您将配置您希望它扫描代码存储库以获取更新代码的频率,或者您可以告诉它在特定时间构建。所有可通过浏览器配置。
  • 问:除了一个损坏的构建的迹象之外,这到底会给我带来什么?我是否应该在此解决方案(sln 文件)中设置将由这些脚本运行的测试项目,以便我可以测试特定的功能?目前,我们有两个这样的测试,因为我们没有时间(或者坦率地说,没有经验)进行良好的单元测试。

    答:第一次构建失败或变得不稳定时,您会收到一封电子邮件。如果单元测试失败或者可以通过您设置的任意数量的标准将其标记为不稳定,则构建是不稳定的。当单元测试或构建失败时,您将收到电子邮件,它会告诉您失败的位置、原因和方式。通过我的配置,我们得到:
  • 自上次工作构建以来的所有提交列表
  • 提交这些提交的注释
  • 提交中更改的文件列表
  • 构建本身的控制台输出,显示错误或测试失败
  • 问:为此,我需要什么样的硬件?

    答:一个 VM 就足够了
  • 问:一旦构建完成并经过测试,将构建放在 ftp 站点上或通过其他方式进行内部访问是一种常见的做法吗?这个想法是这台机器进行构建,我们都去它,但如果我们需要,可以进行调试构建。

    答: Hudson 可以用它做任何你想做的事情,包括通过 md5 哈希对其进行标识、上传、复制、存档等。它会自动执行此操作,并为您提供长期运行的构建工件历史记录。
  • 问:我们应该多久进行一次这种构建?

    答:我们每小时轮询 SVN,查找代码更改,然后运行构建。 Nightly 还可以,但 IMO 有点无用,因为您昨天所做的工作在您进入的早晨不会在您的脑海中浮现。
  • 问:空间是如何管理的?如果我们每晚进行构建,我们应该保留所有旧构建,还是在大约一周左右后开始放弃它们?

    答:这取决于你,经过这么长时间,我将我们的构建工件移动到长期存储或删除它们,但是所有存储在我保留的文本文件/xml 文件中的数据,这让我可以存储变更日志、趋势图等服务器占用的空间很小。您也可以将 Hudson 设置为仅保留来自尾随构建的工件
  • 问:还有什么我在这里没有看到的吗?

    答:不,现在就去找 hudson ,你不会失望的!
  • 关于c# - 我如何以及为什么要设置 C# 构建机器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/616149/

    相关文章:

    angular - 如何更改 aws CodeBuild 上的构建文件夹

    .net - 单人开发团队(.NET 平台)中的版本控制、部署和持续测试

    python - 在 Django 项目中找不到 Travis.yml 文件

    c# - 如何将对象列表转换为二级字典?

    c# - 取消 token 源和嵌套任务

    c# - StreamReader 和二进制数据

    c# - 如何正确解析 SQL CREATE TABLE 语句

    c# - 是什么导致错误 "The "ResolveManifestFiles”任务意外失败。路径中有非法字符

    powershell - 如何从 Powershell 设置 TeamCity 构建状态?

    entity-framework - 具有分支依赖项的分支项目的 TFS 策略