我正在尝试为VSTS上的项目设置CI / CD管道。
该项目,或者更好地说该解决方案包含4个网站(托管在虚拟机上的ASP.NET)和5个额外的共享项目。目前,每当我们推送一些内容到git时,都会触发构建过程,VSTS会为所有4个网站构建整个解决方案。
我有几个问题
我还没有设法找到CI用于构建的项目配置。它会自动切换到释放模式或使用结账时选择的任何内容(例如调试)。如果没有切换到释放模式,是否有可能以某种方式强制它?
理想情况下,我想选择要构建哪个网站以节省时间,当然,一旦构建结束,只将该网站部署到登台/实时环境,而不是全部4.这可能吗?
答案 0 :(得分:0)
Visual Studio Build 和 MsBuild 任务有一个Platform和Configuration参数,可以强制进行正确的配置:
最常见的技巧是在此处设置变量,以便您也可以在Visual Studio Test任务中指定这些值。
如果你将这些留空,它将默认为解决方案默认值,可以是任何内容。
仅构建/部署您需要的更改项目,以便逐步构建构建。为此,请确保构建代理保留工作空间,不执行干净构建。
这样,MsBuild可以检测哪些文件已更改,哪些文件需要重建。
然后,您可能需要查看输出文件的日期以检测要部署的站点。
虽然这可能会节省一些时间,但它也会带来一些不一致的可能性。小心。这可以很好地减少CI构建的构建时间,但是对于CD,我依赖于干净的构建,只是为了确保在不应该发布的情况下不会释放先前构建的剩余部分。
Some tips from a previous answer
增量构建的替代方法包括检测自上次成功构建以来的更改。虽然理论上可行,但没有开箱即用的脚本,项目文件和解决方案文件可以引用其根文件夹之外的项目的方式可能使这一切变得不可能,除非该解决方案旨在从头开始正常工作。您的帖子没有提到存储库的类型(Git或TFVC),根据您的设置,您可以查询Build API(通过PowerShell和REST)来获取导致成功构建的最后一个变更集/提交,使用该信息与当前的回购状态相区别,然后决定做什么。