gpt4 book ai didi

tfs - 直接调用 Build vNext 任务

转载 作者:行者123 更新时间:2023-12-04 22:33:41 46 4
gpt4 key购买 nike

构建 vNext 任务是对之前构建过程的巨大改进。不过,一个缺点是我无法将某些任务设为有条件的。我可以为每个组合创建一个额外的构建,但是如果我们必须更改构建的其他部分,这显然会严重扩展并导致大量额外的工作。

相反,我更希望能够编写自己的 PowerShell 任务,这些任务可以调用现有的构建任务。这至少有一个缺点(如果没有构建专门针对 vso 任务,构建代理将不会下载它),但考虑到我们正在使用内部部署的 TFS 和构建代理,我可以接受这一点。

我尝试执行以下操作:

$path = get-item "$env:AGENT_HOMEDIRECTORY\Tasks\NuGetPackager\0.1.56\NuGetPackager.ps1"
& "$path" -searchPattern $searchPattern -outputDir "$packageFolder" -configurationToPackage $configurationToPackage -nugetAdditionalArgs "$nugetAdditionalArgs -version $nugetVersion"

可悲的是,这会导致以下错误:
2016-04-12T09:50:22.3652811Z ##[error]import-module : Could not load file or assembly 'Microsoft.TeamFoundation.DistributedTask.Agent.Interfaces,  
2016-04-12T09:50:22.3652811Z ##[error]Version=14.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find
2016-04-12T09:50:22.3652811Z ##[error]the file specified.
2016-04-12T09:50:22.3652811Z ##[error]At C:\Agent1\Tasks\NuGetPackager\0.1.56\NuGetPackager.ps1:19 char:1

现在我在网上找到的一个解决方案表明我可以将查找的 dll 添加到 GAC,但我真的,真的不想。也很明显,当直接从 TFS 调用时,任务工作得很好,那么我缺少什么配置?

我尝试将包含 dll 的文件夹添加到路径中,甚至在 PowerShell 中显式调用 SetDllDirectory,但这些都没有帮助。

环境:构建代理和 TFS 服务器上的 Windows Server 2012 R2。 TFS 2015 更新 1。

最佳答案

2015 RTM 直到更新 2 的构建代理使用的 Powershell 任务主机是一个自定义主机,它执行创造性的工作来解析程序集和处理输入/输出。不能从代理外部调用这些任务。

另外,相当多的构建任务是使用 Node 实现的,因此您必须检测哪个是哪个并相应地调用它们。

构建任务正在migrated to a new vsts-task-lib ,这将支持代理外调用。这些将允许你想要什么。

同时,您可以使用现有任务(在大多数情况下它们是一个简单的 list 加脚本)并添加一个 string参数到您粘贴变量的任务中,然后您可以将其视为条件。您需要替换所有标准任务。然后再次插入它们。如果您保持 ExtensionID 和任务 GUID 相同,它们将充当就地替换。这可能是最简单的方法来做你想做的事,而不必执行各种破坏任务 UI 的技巧。只需将版本号设置为高得离谱的值,例如 100.0.1.83 .这样你最终会一直使用你的版本。

注:新构建是可重复的,因为多次调用相同的构建它们总是产生相同的结果。可以在存储在源代码管理中的自定义 powershell 脚本中捕获条件操作。这些可以作为工作流的一部分执行。

关于tfs - 直接调用 Build vNext 任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36574345/

46 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com