Azure Devops 上的 Azure 虚拟机规模集 - 无法识别预定义变量
Azure Virtual Machine Scale Set on Azure Devops - predefined variables not recognised
我构建了一个规模集(Windows),我可以在我的 Azure Devops 自定义代理池上成功地 运行 简单命令,使用基于 Windows 19 服务器核心的自定义 VM基于此 guide.
但是,当我尝试在我的任何任务中访问任何 Azure Devops predefined variables 时,它们都无法被识别。例如执行:
- job: jobname
timeoutInMinutes: 200
pool:
name: poolname
vmImage: vmname
steps:
- powershell: |
echo " Branch: $(Build.Branch)"
给我:
Build.Branch : The term 'Build.Branch' is not recognized as the name of a cmdlet, function, script file, or operable
如果我在 Azure 门户中检查我的规模集,扩展 Microsoft.Azure.DevOps.Pipelines.Agent
已成功安装并升级到实例上。
如果 运行 在 Windows 提供的代理(例如 windows-2019
中),则完全相同的任务和 Powershell 工作正常。为什么会发生此错误的任何想法?我错过了什么吗?
我还在我的 VMSS Windows-2019 代理上测试了 shell 脚本任务,它可以正确打印管道中预定义变量的值。我没有收到任何错误。
我尝试了通过在 Azure Cloud 上执行相关的 Azure CLI 创建的 VMSS Shell,以及在 Azure Portal web 上手动创建的 VMSS UI,它们都可以正常工作,没有任何错误。
请按照以下步骤检查:
- 在不同的管道、不同的项目中尝试 VMSS,看看是否会出现相同的问题。
- 尝试创建一个新的 VMSS(您可以尝试手动创建),看看问题是否也出现在新的 VMSS 上。
- 检查您的管道定义(YAML 文件)中是否存在任何语法或格式问题。下面是一个简单的流水线作为参考,我自己测试了一下,可以正常使用。
jobs:
- job: JobA
displayName: 'Job A'
pool: 'My VMSS Agents Pool'
steps:
- task: PowerShell@2
displayName: 'Show predefined variables'
inputs:
targetType: inline
script: |
Write-Host "Build.SourceBranch = $(Build.SourceBranch)"
echo "Build.SourceBranchName = $(Build.SourceBranchName)"
- job: JobB
displayName: 'Job B'
pool: 'My VMSS Agents Pool'
steps:
- task: PowerShell@2
displayName: 'Show predefined variables'
inputs:
targetType: inline
script: |
Write-Host "Build.Repository.Name = $(Build.Repository.Name)"
echo "Build.Repository.ID = $(Build.Repository.ID)"
[更新]
我还在 Microsoft 托管代理 windows-2019 和我的 VMSS 上测试了变量“Build.Branch
”,它在 Microsoft 托管代理上都不起作用windows-2019 也不是我的 VMSS。正如 @DanielMann
所提到的,'Build.Branch
' 不是 Azure Pipelines 的预定义变量。所以,不被识别是正确的。
您评论说,当使用 Microsoft 托管代理 windows-2019 时,变量“Build.Branch
”可以在您的管道中正常工作,能否请您分享我们用相关的管道 运行 日志或屏幕截图来显示这个?就像我上面显示的GIF图像一样。
另外,Microsoft Hosted agent windows-2019 和你的VMSS 运行 是否是同一个pipeline?如果它们 运行 不同的管道,请检查您是否在 Microsoft 托管的 运行 管道上定义了自定义变量“Build.Branch
”经纪人windows-2019.
我构建了一个规模集(Windows),我可以在我的 Azure Devops 自定义代理池上成功地 运行 简单命令,使用基于 Windows 19 服务器核心的自定义 VM基于此 guide.
但是,当我尝试在我的任何任务中访问任何 Azure Devops predefined variables 时,它们都无法被识别。例如执行:
- job: jobname
timeoutInMinutes: 200
pool:
name: poolname
vmImage: vmname
steps:
- powershell: |
echo " Branch: $(Build.Branch)"
给我:
Build.Branch : The term 'Build.Branch' is not recognized as the name of a cmdlet, function, script file, or operable
如果我在 Azure 门户中检查我的规模集,扩展 Microsoft.Azure.DevOps.Pipelines.Agent
已成功安装并升级到实例上。
如果 运行 在 Windows 提供的代理(例如 windows-2019
中),则完全相同的任务和 Powershell 工作正常。为什么会发生此错误的任何想法?我错过了什么吗?
我还在我的 VMSS Windows-2019 代理上测试了 shell 脚本任务,它可以正确打印管道中预定义变量的值。我没有收到任何错误。
我尝试了通过在 Azure Cloud 上执行相关的 Azure CLI 创建的 VMSS Shell,以及在 Azure Portal web 上手动创建的 VMSS UI,它们都可以正常工作,没有任何错误。
请按照以下步骤检查:
- 在不同的管道、不同的项目中尝试 VMSS,看看是否会出现相同的问题。
- 尝试创建一个新的 VMSS(您可以尝试手动创建),看看问题是否也出现在新的 VMSS 上。
- 检查您的管道定义(YAML 文件)中是否存在任何语法或格式问题。下面是一个简单的流水线作为参考,我自己测试了一下,可以正常使用。
jobs:
- job: JobA
displayName: 'Job A'
pool: 'My VMSS Agents Pool'
steps:
- task: PowerShell@2
displayName: 'Show predefined variables'
inputs:
targetType: inline
script: |
Write-Host "Build.SourceBranch = $(Build.SourceBranch)"
echo "Build.SourceBranchName = $(Build.SourceBranchName)"
- job: JobB
displayName: 'Job B'
pool: 'My VMSS Agents Pool'
steps:
- task: PowerShell@2
displayName: 'Show predefined variables'
inputs:
targetType: inline
script: |
Write-Host "Build.Repository.Name = $(Build.Repository.Name)"
echo "Build.Repository.ID = $(Build.Repository.ID)"
[更新]
我还在 Microsoft 托管代理 windows-2019 和我的 VMSS 上测试了变量“Build.Branch
”,它在 Microsoft 托管代理上都不起作用windows-2019 也不是我的 VMSS。正如 @DanielMann
所提到的,'Build.Branch
' 不是 Azure Pipelines 的预定义变量。所以,不被识别是正确的。
您评论说,当使用 Microsoft 托管代理 windows-2019 时,变量“Build.Branch
”可以在您的管道中正常工作,能否请您分享我们用相关的管道 运行 日志或屏幕截图来显示这个?就像我上面显示的GIF图像一样。
另外,Microsoft Hosted agent windows-2019 和你的VMSS 运行 是否是同一个pipeline?如果它们 运行 不同的管道,请检查您是否在 Microsoft 托管的 运行 管道上定义了自定义变量“Build.Branch
”经纪人windows-2019.