问题: 我们正在使用发布管道运行Selenium测试。如果运行这些测试的环境部署被取消,则驱动程序可能不会被杀死,这将锁定工作文件夹。因此,当在版本定义内的同一环境上再次进行部署时(无论是新版本还是重新部署都没有关系),版本代理将抛出错误,指出工作文件夹已锁定。
因此,我们确实具有Powershell任务,该任务带有一个进行清理的内联脚本(它是内联的,因此没有依赖项),但是不幸的是,TFS发行管道试图在运行提及的Powershell脚本之前将工件下载到锁定的文件夹中。
在发布管道下载工件之前,是否有一种方法可以执行嵌入式Powershell?
我们确实有一个使用多个阶段的部分解决方案,但是只有在部署队列不繁忙时,这才可以工作,并且我们将达到将来的状态,并且当队列繁忙时,TFS可能为特定环境部署的不同阶段选择不同的代理,导致此方法不起作用。因此,这一问题带来了一个额外的问题:或者,是否可以针对特定的环境部署锁定代理,以使代理在阶段之间不发生变化?
我确实搜索了两种解决方案,但似乎没有开箱即用的解决方案,还是错过了?如果没有,那么是否有某种创造性的方法来实现以上任何一个?
答案 0 :(得分:2)
您正在从错误的角度来解决这个问题。如果该过程失败,则需要清理。因此,在发布的末尾添加任务 ,其中condition为canceled()
(或者也许为ne(succeeded())
,以执行清理操作。
此外,您没有指定进行Selenium测试所用的语言,但是在C#中,您可以将Webdriver创建的内容包装在using
块中,以确保正确清理驱动程序。表面上其他语言也有类似的构造或模式。基本上,“如果Web驱动程序超出范围,请定期清理”。
答案 1 :(得分:0)