Azure Devops 中的秘密管道参数

Secret Pipeline Parameter in Azure Devops

我有一个用例,我想在带有用户名和密码的 yaml 管道中使用管道参数。 对于用户名,这很简单,因为我只需在参数部分添加以下内容。

parameters:
- name: Username
  type: string
  displayName: Username(Email)

我也想使用密码作为管道参数,但我还没有找到将其声明为机密的方法。 有没有办法像变量一样使用管道参数作为秘密?到目前为止,我找到了一个解决方法,因为我将一个变量声明为秘密并在每个 运行 之前更新这个变量。但这不是最好的体验。也许我遗漏了文档中的某些内容?

如果能像下面的代码那样工作就好了:

parameters:
- name: Username
  type: string
  displayName: Username(Email)
- name: Password
  type: secret
  displayName: Password

这是不可能的。前段时间,我什至在开发者社区 Secret type for runtime paramaters 上创建了一个功能请求(请随意投票)。因此,如果您有解决方法,则必须坚持一段时间,直到 Azure DevOps 团队不会实施它。

有一个替代方法。建议在 Azure DevOps 中创建一个具有秘密值的变量组,或者定义 variable as a secret at the individual pipeline(如果它始终相同,而不管 step/environments)。这是通过变量组

实现的方法

然后变量组将通过变量模板加载到管道中:

  variables:
  - group: 'Secrets_${{ parameters.environmentName}}'

这将被单个任务引用 password: ${{ variables.Secret1}}

此代码片段的重要之处在于理解变量范围。最佳做法是为每个环境分配不同的组,同时使用相同的变量名。因此 variable groups should be scoped and loaded at the correct level.