在TFS发行版中,是否有一种方法可以执行Powershell脚本,而不是在同一代理上下载工件?

时间:2019-02-08 20:45:37

标签: tfs release

问题: 我们正在使用发布管道运行Selenium测试。如果运行这些测试的环境部署被取消,则驱动程序可能不会被杀死,这将锁定工作文件夹。因此,当在版本定义内的同一环境上再次进行部署时(无论是新版本还是重新部署都没有关系),版本代理将抛出错误,指出工作文件夹已锁定。

因此,我们确实具有Powershell任务,该任务带有一个进行清理的内联脚本(它是内联的,因此没有依赖项),但是不幸的是,TFS发行管道试图在运行提及的Powershell脚本之前将工件下载到锁定的文件夹中。

在发布管道下载工件之前,是否有一种方法可以执行嵌入式Powershell?

我们确实有一个使用多个阶段的部分解决方案,但是只有在部署队列不繁忙时,这才可以工作,并且我们将达到将来的状态,并且当队列繁忙时,TFS可能为特定环境部署的不同阶段选择不同的代理,导致此方法不起作用。因此,这一问题带来了一个额外的问题:或者,是否可以针对特定的环境部署锁定代理,以使代理在阶段之间不发生变化?

我确实搜索了两种解决方案,但似乎没有开箱即用的解决方案,还是错过了?如果没有,那么是否有某种创造性的方法来实现以上任何一个?

2 个答案:

答案 0 :(得分:2)

您正在从错误的角度来解决这个问题。如果该过程失败,则需要清理。因此,在发布的末尾添加任务 ,其中conditioncanceled()(或者也许为ne(succeeded()),以执行清理操作。

此外,您没有指定进行Selenium测试所用的语言,但是在C#中,您可以将Webdriver创建的内容包装在using块中,以确保正确清理驱动程序。表面上其他语言也有类似的构造或模式。基本上,“如果Web驱动程序超出范围,请定期清理”。

答案 1 :(得分:0)

我在下载工件时遇到了类似的问题,您可以通过单击环境名称,展开其他选项,然后选择“跳过工件下载”来禁用此步骤:

enter image description here