我只是想看看其他人在构建自动化过程中在做什么,而不是通常的编译、构建、运行测试等任务,这些任务可能对其他人考虑和研究有帮助和启发,例如:
- 生成代码文档
- 使用代码指标来衡量构建质量,如果违反了既定指标,则构建失败。
我只是想看看其他人在构建自动化过程中在做什么,而不是通常的编译、构建、运行测试等任务,这些任务可能对其他人考虑和研究有帮助和启发,例如:
将可执行文件发送到http://virustotal.com以对所有主要的反病毒引擎进行病毒扫描。
并不是说我们认为我们的前任包含病毒,但有时您会得到误报,并且您不希望它成为发现它的客户。8-)
我们有一个推特账户,所以我们可以随时随地查看它的状态
我们有一个 Staples 简易按钮,我们已经连接了该按钮以在按下时触发构建。
为可能散布在代码周围的任何 TODO/FIXME 等创建报告。
以下是我已经做过、正在做或计划做的一些事情:
从failblog.com 中拉出一个随机图像以附加到“构建失败”电子邮件。
自动推进您的问题工作流程。
我们为我们的 Bamboo CI 服务器编写了一个自定义插件,它收集与构建相关的所有 JIRA 问题(由 svn commit 评论确定)并检查它们在 JIRA 中的状态。
一旦构建成功(并将应用程序部署到正在运行的服务器),“等待构建”工作流阶段中的任何问题都会自动推进到“已构建并可用于测试”阶段,这会触发一封电子邮件发送到分配给该问题的测试人员。
这意味着我们的测试人员不会在开发人员签入代码时收到问题通知电子邮件,而是当修复程序在服务器上实时运行并且测试人员实际上可以对其进行处理时。
直接部署网站以测试部署服务器。
我们对我们生成的所有二进制文件应用数字签名。构建脚本会自动执行此操作。
一些东西。
替换 SVG 初始屏幕中的版本号,然后在 Inkscape 中呈现它。
我们构建 BizTalk 2006 项目 :)
我们针对我们最新的公开版本进行二进制兼容性分析(使用反射),以确保我们不会意外引入二进制破坏性更改。每当我们被迫进行重大更改时,我们都会将特定的 api 添加到“已接受的重大更改”列表中,以便下一个构建可以跳过测试。到了发布时间时,我们会列出新版本中出现问题的 API 的完整列表。
我参与过的各种项目都有大型的公开展示,展示了谁最后签入以及谁破坏了构建。我们使用Build-o-matic完成了这项工作,我编写了Team Piazza来为Team City构建显示相同的信息。
我们有一个 Web 应用程序并进行了性能测试,并将 HTML/CSS 验证放入测试脚本中。
托管代码:
本机代码:
对于 Java 开发,我们使用:
哈德逊也
我们有一个Nabaztag/tag显示构建服务器上是否发生任何错误。
我没有在这里阅读超过一半的答案,但我希望其中一些是“新的”:
以下是我在持续集成中通常拥有的一些东西:
How about embedding a build-time timestamp into each built image?
<ItemGroup>
<StampFile Include="BuildTimestamp.cs"/>
</ItemGroup>
<Target Name="BuildTimestamp"
Outputs="@(StampFile)">
<Message Text="Building Timestamp..." />
<Touch
AlwaysCreate = "true"
Files="@(StampFile)" />
<WriteLinesToFile
File="@(StampFile)"
Lines='public static class Build { public static string Timestamp = "%(StampFile.CreatedTime)" %3B }'
Overwrite="true"/>
</Target>
You could extend this to include Machine name, phase of the moon, etc.
我们使用'checkstyle' ( http://checkstyle.sourceforge.net/anttask.html ) 来生成一个代码报告,这些代码可以新签入并且在开发人员构建之前没有(正式)审查。此外,我还编写了一些执行以下操作的自定义任务:
还有更多任务,但它们特定于内部环境相关设置。
我们做了很多:使用 MSBUILD
我真的很惊讶没有人提到更新配置文件!我们根据我们为使用构建脚本而构建的环境更新我们的配置文件 b。它可以节省至少 20 分钟来替换所有 connectionStrings 和 appSettings。我们做的其他事情是:
更新版本号
移至测试服务器
运行代码分析
电子邮件构建状态
运行一些数据库脚本
对于 Java,您还可以使用 Ivy 自动抓取任何丢失的库。例如,如果您使用 Hibernate,您可能希望也可能不希望在您的发行版中包含这些库。
在构建后步骤中重置测试数据库:
使用这些文件
在此之后,我们有一个干净的测试数据库,具有正确的模式,来自中央数据库的所有固定数据,然后是一些额外的测试数据。
如果架构和固定数据也位于可比较的数据和 sql 文件中会更好,但那是 WIP。中央数据库还没有,但应该在源代码控制中。
我们做了几件事:
我们有一个构建脚本,它自动标记构建和 SVN,并将应用程序部署到 WebSphere 应用程序服务器。
运行单元测试和代码分析工具,如 NDepend、Gandarme。结果由CC.Net发布
除了这里已经多次提到的版本控制、签名和测试等,我们还:
处理其他紧迫的最后期限或赶上电子邮件(等待这并不酷,或有趣......)好吧,这就是我真正要做的:http ://samurai-ryan.mybrute.com/