TFS 2012:Correllating来构建二进制和源代码(TFS 2012: Corrella

2019-08-01 23:02发布

我开始潜入2012 TFS和我有层次有基本的了解,以及如何构建服务器,控制器和代理工作,以及如何不同的构建脚本可以有不同的配置和项目。

然而,我与挣扎的事情之一是我们的源代码控制解决方案的要求,指出我需要能够证明一个特定的变更或shelfset产生的特定版本。 也就是说,给定一个特定的二进制,我可以指向生成二进制释放变更。 我也应该能够指向被合并到发布分支测试变更。 这里的想法是不只是一个职责分离,但证实,由于发布和测试的变更是相同的,没有代码注入由代码评审的项目。

我读过一个博客帖子是关于“二进制促销”会谈-将这一概念是有用的,我的情况? 我有一个很难找到这个二进制推广是如何设立在TFS。

Answer 1:

部署

开箱TFS真的不支持部署的,它可以部署到构建1点的位置往往是一个测试服务器(认为实验室管理)。 TFS 2012已经内置了对Azure的部署支持,但他们仍然在构建结束发生,生成工件不能自动部署到新的位置。

你可以修改生成的模板,允许释放到不同的位置,但仍然是一个新鲜的构建在任何环境,而不是真正的二进制促销活动。

TFS确实,但是,有建设质量的概念,当这种质量改变,实际上触发关闭事件。 TFS部署是一个第三方工具,挂钩到质量变化事件,可以执行PowerShell脚本。 这意味着有一个下拉的值,你可以简单的变化自动开球释放到你想要的任何环境的脚本。 您可以自定义(每队集合)构建质量列表是环境(DEV,UAT,分期,生产等),该脚本,然后计算出在哪里释放特定的构建到列表。

VS2012也有一些不错的改进,网络部署,这意味着部署配置存储在与项目,这在理论上意味着他们会在下拉菜单中的文件夹可用于TFS部署者使用源代码控制。

我不相信TFS不断打造品质,这意味着你不能真正使用的建设质量历史保持什么部署到该环境中的列表的历史。 你可以很容易尽管记录这些信息作为部署脚本的一部分。 或者至少是一个自定义汇总节点添加到生成有关的发布信息。

TFS2012确实有作为部署的Azure的部署功能的一部分,以纪念构建的能力,你标记TFS部署构建为部署使用脚本,但感觉并不十分有用。

章鱼部署是另一个项目,是值得一试,并可以用来代替TFS部署的,如果你的编译模板创建的NuGet包。 它需要在你需要在每个环境处理的版本安装代理生产硬件更多的控制权,但它解决了很多与部署等问题。

版本

一旦你有自动释放,人们不会绕过一个不错的一致的方式,你可以看看增强构建模板注入Build版本,或变更号码作为集版本的构建为自动构建的一部分东西。 有许多不同的方式来做到这一点,大量的博客 帖子和工具来帮助你实现这一目标。

或者你可以只使用自动装配版本( [assembly: AssemblyVersion("1.0.*")] )给你的日期/时间发生的身材,这就像1.0.1234.123结束,其中1234是一样的东西,因为1月1日的天2000和123是自午夜分钟(我的细节可能是错在这里)。

如果你正在部署的网站,那么我强烈推荐的地方注入当前构建版本到HTML。 这样,您就可以检查一个网站,而无需进入bin目录下运行的版本。 它也可以被追加为查询字符串的CSS / JS文件导入,以确保没有浏览器版本之间发生缓存。

思考

就个人而言,我希望微软意识到XAML构建工作流正在尝试做的太多了,他们分手了不同的关注点(构建,测试,部署...)成不同的脚本化的部分。 当然,这不会是直到TFS的下一个主要版本是几年的时间。 虽然使用Team Foundation服务,他们正试图重复快了很多,所以他们可以在Azure部署的东西实际上延伸到一些在未来更近更有益。



文章来源: TFS 2012: Correllating binaries to builds and source code