【问题标题】:Is it possible to use aliases for pipeline parameters in Azure DevOps?是否可以在 Azure DevOps 中为管道参数使用别名?
【发布时间】:2020-10-30 00:41:51
【问题描述】:

假设我的管道中有以下参数:

parameters:
- name: environment
  displayName: 'Environment'
  default: 'SERVER_0562'
  type: string
  values: 
  - 'SERVER_0562'
  - 'SERVER_5149'
  - 'SERVER_1892'

但我不希望任何运行管道的人在从下拉列表中选择 Environment 时看到这些名称。然后我想看到以下名称:

- QA Server
- DEV Server
- PROD Server

是否有任何“简单”的方法可以做到这一点,或者唯一的方法是处理条件?

${{ if eq(parameters.environment, 'DEV Server') }}:

【问题讨论】:

    标签: azure-devops yaml azure-pipelines devops


    【解决方案1】:

    请检查:

    
    parameters:
    - name: image
      displayName: Pool Image
      type: string
      default: Ubuntu
      values:
      - Windows
      - Ubuntu
      - MacOS
      
    trigger: none
    
    jobs:
    - job: build
      displayName: build
      pool: 
        ${{ if eq(parameters.image, 'Ubuntu') }}:
          vmImage: 'ubuntu-latest'
        ${{ if eq(parameters.image, 'Windows') }}:
          vmImage: 'windows-latest'
        ${{ if eq(parameters.image, 'MacOS') }}:
          vmImage: 'macOS-latest'
      steps:
      - script: echo building $(Build.BuildNumber) with ${{ parameters.image }}
    
    

    在您更改问题后,我认为这可能会对您有所帮助

    
    parameters:
    - name: environment
      displayName: 'Environment'
      default: 'QA Server'
      type: string
      values: 
      - 'QA Server'
      - 'DEV Server'
      - 'PROD Server'
      
    trigger: none
    
    variables:
    - name: QA
      value: 'SERVER_0562'
    - name: DEV
      value: 'SERVER_5149'
    - name: PROD
      value: 'SERVER_1892'
    
    jobs:
    - job: build
      displayName: build
      pool: 
        vmImage: 'windows-latest'
      steps:
      - script: echo building $(Build.BuildNumber) with ${{ parameters.environment }}
      - powershell: |
          
          If('${{ parameters.environment }}' -eq 'QA Server') {
            Write-Host '##vso[task.setvariable variable=folderName;isOutput=true]$(QA)'
          } ElseIf('${{ parameters.environment }}' -eq 'DEV Server') {
            Write-Host '##vso[task.setvariable variable=folderName;isOutput=true]$(DEV)'
          } ElseIf('${{ parameters.environment }}' -eq 'PROD Server') {
            Write-Host '##vso[task.setvariable variable=folderName;isOutput=true]$(PROD)'
          } Else {
            Write-Host 'I am here'
          }
        name: setFolderName
      - powershell: |
          Write-Host '$(setFolderName.folderName)'
          
    

    【讨论】:

    • vmImage 的使用只是一个示例场景,就我而言,要实现您的解决方案,我相信我必须使用自定义变量,在这种情况下我该怎么做?跨度>
    • 对不起,如果这个样本不是你的情况,你能描述一下吗?例如,您使用了运行时参数,因此我提出了这个解决方案。请详细说明您的问题,以便我为您提供帮助。
    • 我的错,我应该在我的示例中更具体,我只是重构它以便更好地理解。
    • @RogerioSchmitt SERVER_0562 是您私人泳池的名称吗?
    • 它是我稍后用来从另一个存储库获取一些特定服务器配置的文件夹名称。
    【解决方案2】:

    受到@Krzysztof Madej 贡献的启发,我最终通过conditionally assigning variables 解决了我自己的问题:

    parameters:
    - name: environment
      displayName: 'Environment'
      default: 'QA Server'
      type: string
      values: 
      - 'QA Server'
      - 'DEV Server'
      - 'PROD Server'
      
    trigger: none
    
    variables:
      ${{ if eq(parameters.environment, 'QA Server') }}:
        bacon: SERVER_0562
      ${{ if eq(parameters.environment, 'DEV Server') }}:
        bacon: SERVER_5149
      ${{ if eq(parameters.environment, 'PROD Server') }}:
        bacon: SERVER_1892
    
    jobs:
    - job: build
      displayName: build
      steps:
      - script: echo building $(Build.BuildNumber) with ${{ variables.bacon }}
    
    

    我相信这是一个更简单的实现,因为我不依赖于 PowerShell 脚本。

    【讨论】:

      猜你喜欢
      • 2019-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-28
      • 1970-01-01
      • 1970-01-01
      • 2021-05-23
      • 1970-01-01
      相关资源
      最近更新 更多