在 Visual Studio Team Services 中将文件从构建服务器提交回存储库

Commit file back to repository from build server in Visual Studio Team Services

我目前正在使用 TFS/Visual Studio Team Services(以前是 VS Online)设置持续集成,并且我正在使用 Team Foundation Build 2015 任务。所以不是 XAML 构建。

我正在使用它来构建 Xamarin Android 项目,但我想这很不敬,

过程应该是这样的:

然后剩下的,构建部署到 hockeyapp 等

第一步都已配置,但我正在努力处理提交部分。如何让 TFS 提交文件?我真的没有看到任何适合它的任务。我试过使用 Copy and Publish Build Artifacts Utility - 但它似乎没有用,我什至不确定这是否是正确的实用程序

顺便说一句,我正在使用默认的托管构建代理。任何帮助将不胜感激

警告

我确实想指出,在构建过程中签入更改可能会导致 VSTS/TFS 的某些功能无法正常工作。工作项与签入、源代码和符号生成的关联,从更改到构建到发布的易处理性以及与测试管理器的集成,远程调试,可能不会产生预期的结果,因为 te build 中记录的 Changeset/commit 可能不匹配实际来源。这可能会导致意外的有趣行为。

此外,如果在构建开始后已经 committed/checked-in 进行了任何新更改,则可能会在源代码管理中更新版本号,以获取实际未在该版本下发布的代码。

所以:首先,从构建过程中更改源被认为是一种不好的做法。

备选方案

有更好的方法,一种是使用构建版本(Build_BuildNumber 或 Build_BuildID 变量)。或者,您可以使用 task like GitVersion 根据 git 存储库中的分支和标记生成语义版本。这样,您的构建将生成正确的版本号,并在多次构建相同源代码的情况下增加修订版。

我明白了,但我仍然想在构建过程中签入我的代码

如果这些东西对您不起作用,并且您仍想将更改作为构建的一部分签入,您可以使用 TFVC Build Tasks if you're using TFVC or use the Git Build Tools 将远程添加到本地存储库,然后使用git 命令行工具,用于提交更改并将更改推送回存储库。

这些扩展需要安装 TFS 更新 2。但是您可以使用 tfx commandlien 工具推送单独的构建任务。 For the TFVC tasks the process is explained here.

上mac

在 mac 上会更难,因为您使用的是 TFVC。我的 TFVC 任务利用 TFS 客户端对象模型和 Powershell 与 TFS 服务器通信。当您处于构建上下文中时,tf.exe 工具甚至无法在 windows 上工作,这就是我需要直接调用 VersionControlServer 对象的原因。鉴于我依赖这些技术,这些任务不会 运行 在 Mac 或 Linux 代理上。

您可以尝试查看 Team explorer Everywhere X-platform commandline 是否可以从构建代理中运行(使用 shell 脚本)。我无法在实际 Mac.

上进行测试

鉴于您的项目的跨平台性质,我建议您转移到 Git,它集成到 XCode 和 Android Studio 中,使制作原生 UI 或建立在本机库之上。

备选方案 2

您可以设置一个构建,对代码进行必要的更改,然后签入修改后的代码。然后使用修改后的代码 (CI) 构建 运行 Android 和 Mac 构建。