【问题标题】:How can I pass in the Service Connection name to a YAML pipeline?如何将服务连接名称传递给 YAML 管道?
【发布时间】:2019-12-18 15:39:10
【问题描述】:

我有几个团队需要部署到多个 QA 环境。

我正在使用ServiceFabricDeploy@1 任务进行部署,但我找不到在部署期间更改服务连接的方法。

输入必须在编译期间有效,因此我不能使用变量宏(即 $(connectionName) 在编译期间为空白)。 输入必须根据从 UI 传入的值进行更改,因此如果我使用模板表达式(即 ${{variables.connectionName}}))它们会通过编译但在运行时变为空白。

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

【问题讨论】:

  • 尝试考虑parameters... ${{ parameters.name }}
  • 在设置变量之前对参数进行评估,因此它们以空开头,这不是有效的 ServiceConnection。

标签: azure azure-devops azure-pipelines


【解决方案1】:

原来我没有正确使用变量。我试图通过参数传递它们。我需要做的是直接使用变量宏。 这有效:

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

【讨论】:

  • 我想补充一点,这在某些条件下有效,在其他条件下无效。问题是预编译器正在验证 Azure RM 连接和 Service Fabric 连接。它们必须是有效名称或为空白。
【解决方案2】:

截至 2020 年 6 月 29 日,Microsoft's documentation

服务连接不能由变量指定

【讨论】:

  • 我不知道他们是如何引用它的,但名称可以在变量中传递。我在几个管道中做这件事。问题是什么 - 预编译器验证了几个输入。 Azure RM 连接和 Service Fabric 连接在预编译阶段必须有效(或空白)。请参阅上面的答案,了解我是如何让它工作的。
【解决方案3】:

为了扩展 Nitin 的响应,这曾经在我们的经典 UI 定义的发布管道中工作 - 我们将 $(AzureSubscription) 传递给许多 Azure App Service Deploy 任务,并适当地选择了服务连接。

几天前,我不得不对单个部署任务进行更改以修改工件路径,只有这个任务开始失败,直到我取出变量并手动指定服务连接。

我怀疑现有的管道可能会继续工作,直到它们被修改。我将做一些实验来验证这一点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-27
    • 1970-01-01
    • 1970-01-01
    • 2018-08-20
    • 2020-11-17
    • 1970-01-01
    • 1970-01-01
    • 2016-01-18
    相关资源
    最近更新 更多