如何根据参数值有条件地设置 Azure DevOps yaml 变量

Mik*_*e . 9 yaml azure-devops azure-pipelines-yaml

我正在尝试根据 yaml 管道中的参数值设置变量。我似乎读过许多其他帖子,其中显示了作者所说的有效示例,但在尝试执行如下操作时,我无法解决过去的问题。

我也尝试了这个例子的许多变体,这里无法列出。有时它会将“值”显示为重复键。在其他情况下,我已经能够尝试启动运行并获得环境选择的提示,但打开阶段对话框会引发解析错误。

文件顶部的变量声明与阶段或作业中的变量声明之间是否存在某种差异?这似乎是我在阅读其他示例时注意到的差异。

最终我想做的是根据环境参数的值设置ServiceConnection变量值。

parameters:
- name: environment
  displayName: Environment
  type: string
  values:
  - DEV
  - TEST

pr: none
trigger: none

pool: PrivateAgentPool

variables:
  - name: 'isMain'
    value: $[eq(variables['Build.SourceBranch'], 'refs/heads/main')]
  - name: 'buildConfiguration'
    value: 'Release'

  - name: 'environment'
    value: ${{ parameters.environment }}

  - name: 'ServiceConnection'
    ${{ if eq(variables['environment'], 'DEV') }}:
      value: 'svcConnectionDev'
    ${{ if eq(variables['environment'], 'TEST') }}:
      value: 'svcConnectionTest'
Run Code Online (Sandbox Code Playgroud)

小智 7

看来您的解决方案几乎是正确的。考虑下面的例子。

parameters:
  - name: region
    type: string
    default: westeurope
    values:
      - westeurope
      - northeurope

variables:
  ${{ if eq(parameters['region'], 'westeurope') }}:
    ServiceConnection: "svcConnectionDev"
  ${{ else }}:
    enter code here
Run Code Online (Sandbox Code Playgroud)

如果你想跨域使用这个ServiceConnectionvar,你可以通过调用$ServiceConnection来完成

  • 该代码可能有效。但如果你想有条件地设置 ServerConnection,如果我将 ServiceConnection: "svcAlternateConn" 放在“在此处输入代码”的其他部分,我会收到重复键错误 (2认同)