我们的项目包含一些遗留的vb6组件,这些组件需要注册才能正常工作。我们有几个不同版本的分支,这些分支包含这些组件的不同版本。
我们为代码托管和自动构建设置了tfs2018,目前我们以以下方式处理这种情况:
我们有一个运行多个vm的hyper-v主机,每个vm都安装了所有需要的工具链。每个vm都有自己的buildagent注册到tfs代理池中。当我们需要一个新的构建时,vm会恢复到以前保存的快照,提取存储库,构建并部署生成的二进制文件。
这种情况下的问题是,在开始构建之前,我们需要将vm恢复到干净的状态。此时,已经分配了一个构建代理,一旦我们恢复vm,从代理到tfs的连接就会关闭,因此构建失败。
我们过去为解决上述问题所做的是一个肮脏的解决方案,我们创建了第二个构建定义,它在虚拟构建代理上运行,恢复目标vm,并在vm重置为干净状态后立即在真实构建代理上执行真实构建。
根据我所读到的内容,有可能将无代理任务/阶段添加到构建定义/管道中,但这并不能提供所需类型的任务(我们要么需要建立到hyper-v主机的ssh会话,要么使用powershell远程脚本(ssh更可取((
有没有可能在不使用第二个虚拟代理的情况下解决上述问题?
问题本身并没有那么复杂,我们只需要为每个构建提供一个新的环境,以避免由于版本冲突而导致的问题。
谢谢:(
为您的定义添加一个在部署组阶段之前运行的附加阶段。请参阅文档。