Warning
我确实想指出,在构建过程中检查更改可能会导致 VSTS/TFS 的某些功能无法正常工作。工作项与签入、源和符号生成的关联、从构建到发布的变更的可处理性以及与测试管理器的集成、远程调试,可能不会产生预期的结果,因为构建中记录的变更集/提交可能与实际不匹配来源。这可能会导致意想不到的有趣行为。
此外,如果在构建开始后已提交/签入任何新更改,则可能会在源代码管理中更新未在该版本下实际发布的代码的版本号。
So: 首先,从构建过程中更改源被认为是一种不好的做法。
备择方案
有更好的方法可以做到这一点,一种是使用构建版本(Build_BuildNumber 或 Build_BuildID 变量)。或者你可以使用像 GitVersion 这样的任务 https://marketplace.visualstudio.com/items?itemName=gittools.gitversion根据 git 存储库中的分支和标签生成语义版本。这样,您的构建将生成正确的版本号,并会增加修订版本,以防多次构建相同的源。
我明白,但我仍然想在构建过程中检查我的代码
如果这些事情对您不起作用,并且您仍然想在构建过程中签入更改,您可以使用TFVC 构建任务 https://marketplace.visualstudio.com/items?itemName=jessehouwing.jessehouwing-vsts-tfvc-tasks如果您使用 TFVC 或使用Git 构建工具 https://marketplace.visualstudio.com/items?itemName=ioz.vsts-git-build-tasks将远程添加到本地存储库,然后使用 git 命令行工具提交更改并将更改推送回存储库。
这些扩展需要安装 TFS Update 2。但是您可以使用 tfx commandlien 工具推送各个构建任务。对于 TFVC 任务,流程解释如下 https://github.com/jessehouwing/vsts-tfvc-tasks/wiki/Install-on-TFS-2015.
On mac
在 Mac 上,这会更困难,因为你使用的是 TFVC。我的 TFVC 任务利用 TFS 客户端对象模型和 Powershell 与 TFS 服务器进行通信。这tf.exe
当您处于构建上下文中时,该工具甚至无法在 Windows 上运行,这就是我需要直接调用 VersionControlServer 对象的原因。鉴于我依赖这些技术,这些任务将无法在 Mac 或 Linux 代理上运行。
您可以尝试看看是否团队资源管理器无处不在 X 平台命令行 https://www.microsoft.com/en-us/download/details.aspx?id=47727从构建代理工作(使用 shell 脚本)。我无法在实际的 Mac 上测试这一点。
考虑到项目的跨平台性质,我建议迁移到 Git,它集成到 XCode 和 Android Studio 中,从而更轻松地制作本机 UI 或在本机库之上进行构建。
替代方案2
您可以设置一个构建,对代码进行所需的更改,然后签入修改后的代码。然后让 (CI) 构建运行 Android,并使用修改后的代码构建 Mac。