Azure devops 在发布管道中使用Build.Repository.Uri(Azure DevOps服务器)

Azure devops 在发布管道中使用Build.Repository.Uri(Azure DevOps服务器),azure-devops,azure-pipelines,Azure Devops,Azure Pipelines,我需要在发布管道中使用Build.Repository.Uri。(将其传递给PowerShell脚本) 在构建管道中: Write-Host $(Build.Repository.Uri) > 2019-07-15T08:30:51.8695425Z http://138.202.18.216:8070/Samples/Framework%20A/_git/Framework%20A 在发布管道中: Write-Host $(Build.Repository.Uri) > The

我需要在发布管道中使用
Build.Repository.Uri
。(将其传递给PowerShell脚本)

在构建管道中:

Write-Host $(Build.Repository.Uri)
> 2019-07-15T08:30:51.8695425Z http://138.202.18.216:8070/Samples/Framework%20A/_git/Framework%20A
在发布管道中:

Write-Host $(Build.Repository.Uri)
> The name Build.Repository.Uri was not recognized as the name of a cmdlet, function, script file, or executable program. Check the spelling of the name, or if the path is correct (if included), and try again.
为什么不一致

我还尝试
编写主机$(env:BUILD\u REPOSITORY\u URI)
,因为:(我也不理解.to\u背后的逻辑)

有没有办法在发布管道中获取
Build.Repository.Uri

编辑:解决方案

如果将
system.debug
变量设置为
true
,则可以在生成后的
作业初始化
(Auftrag initialiseren)报告中找到所有预定义变量

如果项目或存储库名称包含空格,请确保在脚本中将其替换为
%20

$Uri = $Uri.Replace(" ", "%20")

要访问发布管道中的构建URI,需要使用发布变量:

Release.Artifacts.{alias}.BuildURI

{alias}
是您在版本中拥有的工件源的别名

如果访问PowerShell脚本中的变量,则需要用下划线替换任何点,即
$env:RELEASE\u ARTIFACTS\uu{alias}\u BUILDURI


来源:

变量Build.Repository.Uri是代理作用域。它可以在脚本中用作环境变量,也可以在生成任务中用作参数。在管道中添加值为true的变量
System.Debug
时,init作业将记录所有可用的环境变量,其中包括存储库URI

您可以尝试使用以下变量:

Write Host$env:BUILD\u REPOSITORY\u URI

Write Host$env:RELEASE_ARTIFACTS_{alias}_REPOSITORY_URI

请注意,{alias}是的大写字母。

感谢您的回复!我尝试了一下,然后返回
$env:RELEASE\u ARTIFACTS\u drop\u BUILDURI
return
$env:RELEASE\u ARTIFACTS\u drop}\u BUILDURI
返回
drop\u BUILDURI
我的代理发布路径:
AzureDevOpsData\agent\\u work\r3\a\FrameworkA\drop\.git
。我做错了什么?我想在这种情况下,别名将是
FrameworkA
$env:RELEASE\u ARTIFACTS\u FrameworkA\u BUILDURI是否返回任何内容?此外,如果在RELEASE
系统中添加变量。Debug
并在Initialize Job任务下将值设置为true,您将看到所有变量都打印到日志中。现在请尝试许多不同的版本,一切都不起作用。难道没有办法简单地将
{alias}
也作为变量吗?我尝试编写主机
$(Build.DefinitionName)
=
frameworka-v1.1
,并编写主机
$(Release.PrimaryArtifactSourceAlias)
=
\u frameworka-v1.1
,这是我发布管道的名称。当
别名
包含空格或特殊字符时,azure devops是否通常可以处理变量?该别名可与
$env:RELEASE\u PRIMARYARTIFACTSOURCEALIAS
一起使用,任何空格都将替换为下划线。您是否尝试过将
System.Debug
变量设置为在初始化作业阶段打印出所有变量?我尝试了这两种方法,但不幸的是它不起作用。你能解释一下哪个别名是什么意思吗?我在哪里能找到它?马丁,我已经更新了我的回答。请检查,随时让我们知道这对您有效。
$Uri = $Uri.Replace(" ", "%20")