【问题标题】:Use Build.Repository.Uri in Release Pipeline (Azure DevOps Server)在发布管道(Azure DevOps 服务器)中使用 Build.Repository.Uri
【发布时间】:2019-07-15 08:54:56
【问题描述】:

我需要在发布管道中使用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.

为什么会出现这种不一致?

我也尝试Write-Host $(env:BUILD_REPOSITORY_URI),因为:How to read directory path of the Artifact in Release pipeline in Azure DevOps?(我也不明白.to_背后的逻辑)

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

编辑:解决方案

"$env:SYSTEM_TASKDEFINITIONSURI$env:BUILD_PROJECTNAME/_git/$env:BUILD_REPOSITORY_NAME" -> http://136.202.18.216:8070/Samples/Framework A/_git/Framework A

如果您将system.debug 变量设置为true,您可以在构建后在Job Initialize (Auftrag initialisieren) 报告中找到所有预定义变量。

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

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

【问题讨论】:

    标签: azure-devops azure-pipelines


    【解决方案1】:

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

    Release.Artifacts.{alias}.BuildURI

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

    如果您在 PowerShell 脚本中访问变量,您需要将任何点替换为下划线,即$env:RELEASE_ARTIFACTS_{alias}_BUILDURI

    来源:https://docs.microsoft.com/en-us/azure/devops/pipelines/release/variables?view=azure-devops&tabs=batch

    【讨论】:

    • 感谢您的回复!我试了一下,$env:RELEASE_ARTIFACTS_drop_BUILDURI 返回" "$env:RELEASE_ARTIFACTS_{drop}_BUILDURI 返回drop _BUILDURI 我的代理发布路径:AzureDevOpsData\Agent\_work\r3\a\FrameworkA\drop\.git。我做错了什么?
    • 我认为在这种情况下别名将是FrameworkA$env:RELEASE_ARTIFACTS_FrameworkA_BUILDURI 是否返回任何内容?
    • 另外,如果您将变量添加到版本 System.Debug 并在 Initialize Job 任务下将值设置为 true,您将看到所有变量都打印到日志中
    • 我现在尝试了很多不同的版本,没有任何效果。难道没有办法简单地将{alias} 也作为变量吗?我尝试了 Write-Host $(Build.DefinitionName) = Framework A - v1.1 和 Write-Host $(Release.PrimaryArtifactSourceAlias) = _Framework A - v1.1,这是我的发布管道的名称。当alias 包含空格或特殊字符时,azure devops 是否可以处理变量?
    • 别名可与$env:RELEASE_PRIMARYARTIFACTSOURCEALIAS 一起使用,任何空格都将替换为下划线。您是否尝试过设置 System.Debug 变量以打印出 Initialze Job 阶段的所有变量?
    【解决方案2】:

    变量 Build.Repository.Uri 是代理范围的。它可以用作脚本中的环境变量和构建任务中的参数。当您在管道中添加值为 true 的变量 System.Debug 时,初始化作业将记录所有可用的环境变量,其中包括 REPOSITORY_URI。

    您可以尝试以下变量:

    Write-Host $env:BUILD_REPOSITORY_URI

    或者

    Write-Host $env:RELEASE_ARTIFACTS_{alias}_REPOSITORY_URI

    请注意,{alias} 是 Artifact source alias 的大写。

    【讨论】:

    • 我都尝试了,但不幸的是它不起作用。你能解释一下 alias 是什么意思吗?在哪里可以找到?
    • @MarTin,我已经更新了我的回复。请检查,随时告诉您这对您有用。
    猜你喜欢
    • 2020-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-05
    • 2021-06-24
    相关资源
    最近更新 更多