azure 如何将服务连接名称传递给YAML管道?

ar7v8xwq  于 2023-06-24  发布在  其他
关注(0)|答案(4)|浏览(97)

我有几个团队需要部署到几个QA环境。
我正在使用ServiceFabricDeploy@1任务进行部署,但无法找到在部署过程中更改服务连接的方法。
输入必须在编译时有效,所以我不能使用可变宏(即$(connectionName)在编译期间为空)。输入必须根据从UI传入的值进行更改,因此如果使用模板表达式(即${{variables.connectionName}})),它们通过编译,但在运行时变为空白。
如何将服务连接名称传递给YAML管道?

iezvtpos

iezvtpos1#

关于这个问题的一个更全面的答案可以在这篇文章中找到:https://learn.microsoft.com/en-us/azure/devops/pipelines/process/runs?view=azure-devops#process-the-pipeline
具体而言,这两段:
“这个顺序有助于回答一个常见的问题:为什么我不能在模板参数中使用某些变量?第1步,模板扩展,仅对YAML文档的文本进行操作。运行时变量在该步骤中不存在。步骤1后,模板参数已解析,不再存在。
它还回答了另一个共同的问题:为什么我不能使用变量来解析服务连接/环境名称?资源在阶段可以开始运行之前被授权,因此阶段和作业级别的变量不可用。可以使用管线级变量,但只能使用管线中显式包含的那些变量。变量组本身就是一个需要授权的资源,因此在检查资源授权时,它们的数据同样不可用。”
所有这些都意味着您不能动态选择可以在作业和阶段级别使用的连接,因为资源检查在动态选择完全合格之前就发生了。
作为读者,您的下一个问题可能是“如何在管道级别选择动态变量组?”“如果您使用Azure Devops,您可以创建一个经典管道,其中包含单个任务,该任务调用YAML发布管道,指定要引用的变量组。https://learn.microsoft.com/en-us/rest/api/azure/devops/pipelines/runs/run-pipeline?view=azure-devops-rest-6.0

6ju8rftf

6ju8rftf2#

我发现我没有正确地使用变量。我试图通过参数传递它们。我需要做的是直接使用变量宏。这个方法的作用是:

- task: ServiceFabricDeploy@1
  inputs:
    applicationPackagePath: '$(Build.ArtifactStagingDirectory)\drop\pkg'
    serviceConnectionName:  $(connectionName)
 ... etc ...
wz1wpwve

wz1wpwve3#

根据微软截至2020年6月29日的文档,
无法通过变量指定服务连接

f1tvaqid

f1tvaqid4#

为了扩展Nitin的响应,这曾经在我们的经典UI定义的发布管道中工作-我们将$(AzureSubscription)传递给许多Azure App Service Deploy任务,并且服务连接被适当地选择。
几天前,我不得不对单个部署任务进行更改以修改工件路径,而 * 只有这个 * 任务开始失败,直到我取出变量并手动指定服务连接。
我怀疑现有的管道可能会继续工作,直到他们被修改。我会做一些实验来验证这个。

相关问题