如何查看Azure Devops中预定义的变量

8

我想查看预定义变量路径中存储的值,例如$(System.DefaultWorkingDirectory),我想查看其中存储的值。但是我无法找到变量的值,那么在Azure DevOps中我应该去哪里查找它。

简单来说,我如何检查特定发布流水线中使用的Build.SourcesDirectory或Build.Repository.LocalPath是什么?


最简单的方法是在脚本任务中打印它们,就像@Krzysztof在下面回答的那样。 - Levi Lu-MSFT
还有其他方法吗?@LeviLu-MSFT - Rishav Singh
您还可以在管道中使用显示所有变量任务。 - Levi Lu-MSFT
@LeviLu-MSFT 我无法在那里看到系统变量。 - Rishav Singh
2个回答

19

我不确定您是否在Azure DevOps中找到了特定位置的值。 根据所选择的代理操作系统,这些值可能会有所不同。 但是,您始终可以将它们打印出来。 请查看此处的文档。

steps:
  - bash: echo $(System.DefaultWorkingDirectory)
要打印所有变量,您可以使用此步骤(因为变量也可以通过环境变量传递给脚本)。
 steps: # 'Steps' section is to be used inside 'job' section.
  - task: Bash@3
    inputs:
      targetType: 'inline'
      script: 'env | sort'

enter image description here

另一个适用于Windows和Linux的选项是(所有功劳归Joe所有):

- pwsh: (gci  env:* | sort-object name)
您还可以使用第三方扩展程序Print all variables
  - task: printAllVariables@1
    displayName: 'Print all variables via extension'

或表达式,例如:

  - ${{ each var in variables }}:
    - pwsh: Write-Host "${{ var.Key }} - ${{ var.Value }}"
      displayName: 'Print variables via expression in the loop'

这里是一个示例流水线:

trigger: none
pr: none

name: Display pipeline variables

variables:
- group: DisplayPipelineVariables
- name: DB_HOSTNAME
  value: 10.123.56.222
- name: DB_PORTNUMBER
  value: 1521
- name: USERNAME
  value: TEST
- name: PASSWORD
  value: TEST
- name: SCHEMANAME
  value: SCHEMA  
- name: ACTIVEMQNAME
  value: 10.123.56.223
- name: ACTIVEMQPORT
  value: 8161

pool:
  vmImage: $(imageName)

jobs:
- job: AllEnvironmentVariables
  strategy:
    matrix:
      linux:
        imageName: 'ubuntu-latest'
      mac:
        imageName: 'macOS-latest'
      windows:
        imageName: 'windows-latest'
  steps:
  - script: env | sort
    displayName: Display all environment variables

- job: PipelineVariablesViaExtension
  strategy:
    matrix:
      linux:
        imageName: 'ubuntu-latest'
      mac:
        imageName: 'macOS-latest'
      windows:
        imageName: 'windows-latest'
  steps:
  - task: printAllVariables@1
    displayName: 'Print all variables via extension'

- job: PipelineVariablesViaExpression
  strategy:
    matrix:
      linux:
        imageName: 'ubuntu-latest'
      mac:
        imageName: 'macOS-latest'
      windows:
        imageName: 'windows-latest'
  steps:
  - pwsh: Write-Host "${{ convertToJson(variables) }}"
    displayName: 'Print all variables via expression'

- job: PipelineVariablesViaExpressionInLoop
  strategy:
    matrix:
      linux:
        imageName: 'ubuntu-latest'
      mac:
        imageName: 'macOS-latest'
      windows:
        imageName: 'windows-latest'
  steps:
  - ${{ each var in variables }}:
    - pwsh: Write-Host "${{ var.Key }} - ${{ var.Value }}"
      displayName: 'Print variables via expression in the loop'

没问题。上述所有内容都适用于您。我只是提到这一点,因为值可能会根据操作系统而异。 - Krzysztof Madej
这在云上可以工作,但当我使用我的本地机器作为构建代理时却不行,尽管我已经在其上安装了bash(Windows 10)。它只是显示“'c:\WINDOWS\system32\bash.exe' 失败,退出代码为4294967295”。是否有某种PowerShell等效物? - Joe
4
在评论中回答自己的问题:这个PowerShell脚本适用于两种情况:- pwsh: (gci env:* | sort-object name) - Joe

-1

简单的回答:

  - bash: |
      env | sort
    displayName: 'Debug: Show Env Vars'

现有的答案已经说了这个。 - Daniel Mann

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接