如何解决在prem build agent BUILD_ARTIFACTSTAGINGDIRECTORY路径上,天蓝色的随机数的预定义构建变量名称是什么
我在我的Prem代理中设置了Azure管道。我需要知道预定义变量才能在@Version
= C:\ Users \ Administrator \ agent_work \ 78 \ a 中获取随机数(例如) 78 在这条路上。
我看了Predefined Variables,但可以找到它。
我也遵循了这个answer。但是 78 并没有在任何变量中定义。
任何人都可以协助找到变量吗?
解决方法
我需要知道预定义变量才能获取随机数。
78
不是预定义变量,因此我们不能使用记录的预定义变量来表示它。
此外,这不是不是随机数。每次我们创建新管道并在特定代理上运行该管道时,它将在number-folder
或agent_work
文件夹下创建一个新的_work
。
有关78
如何出现的一些详细信息:
我曾经使用代理运行六个不同的管道,因此我在_work
文件夹下有六个文件夹(与您的agent_work
文件夹相同)。如果创建新的构建管道,然后使用该代理运行管道,则将获得新文件夹7
。因此,这里的每个number folder
都可以代表一个管道。
其秘密存储在SourceRootMapping
文件夹中。该文件下的Mappings.json
文件记录了最后的内部版本号,每次创建新文件夹时它将增加。并且您可以找到许多以BuildDefinitionID
命名的文件夹,在其中可以找到SourceFolder.json
文件,其有关以下信息:
- 数字文件夹与相应管道之间的关系
- 代理商目录,AgentArtifactstagingDir,...
- 上次运行时间,RepoID,OrgID,ProjectID ...
任何人都可以协助找到变量吗?
目前,Agent.BuildDirectory
变量与您所需的文件夹编号最接近。因此,您可以在管道的开头添加一个Powershell内联任务,以获取文件夹编号。我的PS脚本:
#Get the FolderID so that following commands in this task can use it via $FolderID.
$FolderID = Split-Path "$(Agent.BuildDirectory)" -Leaf
#Check its value.
Write-Host $FolderID
#Set it as job-scoped variable so that following ateps/tasks can use it via $(FolderID).
Write-Host "##vso[task.setvariable variable=FolderID]$FolderID"
在管道的第一个执行此脚本,然后以下任务可以通过$(FolderID)
访问自定义变量。要在第一个PS任务中使用FolderID,请改用$ FolderID。
构建目录ID没有预定义的变量。将这个id用作变量的另一种方法是在管道运行期间从$(Agent.BuildDirectory)
中提取它。
如果您使用的是Linux
环境,则可以这样做:
export BUILD_DIRECTORY_ID=$(echo $(Agent.BuildDirectory) | sed 's|.*\/||)
如果您使用的是Windows
环境:
$build_id = (echo $(Agent.BuildDirectory) | %{$_ -replace "(?s)^.*\\",""})
[Environment]::SetEnvironmentVariable("BUILD_DIRECTORY_ID",$build_id,"User")
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。