Tfs 如何为不同的机器用不同的值替换令牌?

Tfs 如何为不同的机器用不同的值替换令牌?,tfs,azure-devops,release-management,azure-pipelines-release-pipeline,ms-release-management,Tfs,Azure Devops,Release Management,Azure Pipelines Release Pipeline,Ms Release Management,我使用TFS 2018 Update 2作为CI/CD服务器。 我使用task作为代币替换解决方案 当我的web.config文件中有令牌a时, 根据我的tfs发布定义,它将部署到2个VM,VM B和VM C 如果我需要VM B上的令牌A作为值V1,VM C上的令牌A作为值V2 如何通过“替换令牌”任务执行此操作? 我的想法是使用powershell任务在替换令牌任务之前更新变量a。这可能吗 请提供或分享你的想法,这将帮助我很多 谢谢 选项1 是的,您可以使用此Powershell设置变量 Wr

我使用TFS 2018 Update 2作为CI/CD服务器。 我使用task作为代币替换解决方案

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

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

如何通过“替换令牌”任务执行此操作? 我的想法是使用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"

但是,你可以找到更方便的使用杰西的

选项2

我正在考虑另一种技术:在包含机器名的变量中包含每台机器的值,并让VST在处理任务之前为您解析它。范例

存档:

....#(tok)#....
变量:

tok_vma = 'v1'
tok_vmb = 'v2'
tok = $(tok_$(Agent.MachineName))
如您所见,支持嵌套变量。
HTH

您是否使用部署组?是的,我使用部署组您可以为不同的环境(范围)定义具有相同名称的变量。这是否满足您的要求,看看环境变量——但我需要在相同的环境中执行此操作。我得检查一下我的想法和它的效果。如果有更好的解决方案,请让我知道。谢谢您的善意回复。嵌套变量是另一个好主意。