如何为不同的机器替换具有不同值的令牌?

How to replace a token with different values for different machines?

我使用 TFS 2018 更新 2 作为 CI/CD 服务器。 我使用 Replace Token 任务作为我的令牌替换解决方案。

当我的 web.config 文件中有令牌 A 时, 根据我的 tfs 发布定义,它将部署到 2 个虚拟机,VM B 和 VM C。

如果我需要 VM B 上的令牌 A 作为值 V1,VM C 上的令牌 A 作为值 V2。

如何通过替换令牌任务来完成此操作? 我的想法是在 Replace Token 任务之前使用 powershell 任务更新变量 A。这可能吗?

请提供或分享您的想法,这将对我有很大帮助。

谢谢。

选项 1

是的,您可以使用此 Powershell 设置变量

Write-Host "##vso[task.setvariable variable=sauce]crushed tomatoes"
Write-Host "##vso[task.setvariable variable=secret.Sauce;issecret=true]crushed tomatoes with garlic"

参见 here

但是,您会发现使用 Jesse 的 Variable Toolbox 更方便。

选项 2

我在考虑另一种技术:将每台机器的值放在一个包含机器名称的变量中,让 VSTS 在交给任务之前为您解析它。范例

在文件中:

....#(tok)#....

变量:

tok_vma = 'v1'
tok_vmb = 'v2'
tok = $(tok_$(Agent.MachineName))

如您所见,支持嵌套变量 here。 HTH