azure - Azure Devops 上的 Azure 虚拟机规模集 - 无法识别预定义变量
问题描述
我构建了一个规模集(Windows),我可以在我的 Azure Devops 自定义代理池上成功运行简单的命令,并使用基于本指南的基于 Windows 19 Server Core 的自定义 VM 。
但是,当我尝试在我的任何任务中访问任何 Azure Devops预定义变量时,它们不会被识别。例如执行:
- 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
. 任何想法为什么会发生此错误?我错过了什么吗?
解决方案
我还在我的 VMSS Windows-2019 代理上测试了 shell 脚本任务,它可以正确打印管道中预定义变量的值。我没有收到任何错误。
我尝试了通过在 Azure Cloud Shell 上执行相关的 Azure CLI 创建的 VMSS,以及在 Azure Portal Web UI 上手动创建的 VMSS,它们都可以正常工作而没有任何错误。
请按以下步骤检查:
- 在不同的管道、不同的项目中尝试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)"
[更新]
我还在Build.Branch
Microsoft 托管代理 windows-2019 和我的 VMSS 上测试了变量“”,它既不适用于 Microsoft 托管代理 windows-2019,也不适用于我的 VMSS。如前所述@DanielMann
,“ Build.Branch
”不是 Azure Pipelines 的预定义变量。因此,它不会被识别是正确的。
您评论说,当使用 Microsoft Hosted Agent windows-2019 时,变量“ Build.Branch
”可以在您的管道中正常工作,您能否与我们分享相关的管道运行日志或屏幕截图以显示这一点?就像我在上面展示的 GIF 图片一样。
另外,微软托管代理 windows-2019 是否和你的 VMSS 运行相同的管道?如果它们运行不同的管道,请检查您是否Build.Branch
在 Microsoft 托管代理 windows-2019 上运行的管道上定义了自定义变量“”。
推荐阅读
- javascript - 如何显示 3d 漏斗的连接器?
- php - 如何解决codeigniter“新闻”部分的页面空白问题?
- bitwise-operators - 如何仅使用按位运算符找到小于 N 的 m 的最大倍数?
- powershell - 仅传递提供的参数
- c# - c#数据表插入到具有大记录集的excel很慢4500条记录超过6分钟
- pandas - 如何修复 Pandas Scatter_matrix 中过长的轴标签?
- azure - 在 Azure Maps 中更改样式缓慢
- icalendar - Ical 导入事件不起作用事件我的 ical 文件没有错误
- node.js - 如何使用 Nodejs API 在 DigitalOcean Bucket 中创建文件夹?
- python - 数据框查找并删除多个字段的不变值