【问题标题】:Powershell script running in vsts release not recognizing environment variables在 vsts 版本中运行的 Powershell 脚本无法识别环境变量
【发布时间】:2018-08-01 10:48:39
【问题描述】:

我已经使用完美运行的 Azure PowerShell 脚本创建了一个 VSTS 版本。当我尝试从我的 VSTS 版本中调用完全相同的脚本(git repo 中的完全相同的文件)时,就会出现问题。当脚本运行时,我没有收到任何错误,但环境变量$Env:BUILD_SOURCESDIRECTORY 为空。就像我在 VSTS 构建完美执行之前所说的那样,但我无法在 VSTS 版本中运行完全相同的代码。

【问题讨论】:

  • 如果你想从发布中获取构建工件,你可以使用变量 $(System.ArtifactsDirectory) 代替。位于$(System.ArtifactsDirectory)\{BuildDefinitionName}\{ArtifactsName} 中的构建工件(例如$(System.ArtifactsDirectory)\ASP.NET\Drop)。

标签: powershell environment-variables azure-devops azure-pipelines azure-pipelines-release-pipeline


【解决方案1】:

并非所有在 Build 中可用的变量都在 Release 中可用。 Sources 目录在构建期间可用。如果你想在发布期间保持它可用,你应该在 Build 中创建一个 artefact,将它命名为 Sources。这样,工件将通过其各自的变量在 Release 中可用。

可用变量概览:

【讨论】:

    【解决方案2】:

    您的问题是您在 Release 中使用了 Build 变量。这根本行不通,它是空的,因为它根本不存在于发布上下文中。

    即使您可以这样做,我也不建议您这样做。您的发布应仅依赖于工件,而不是在生成工件时构建变量。你当然可以在你的工件中定义这个变量,并从发布中访问,但我强烈建议你不要走这条路,因为这是一个非常糟糕的做法。

    您没有提到它,但如果您说明了您认为需要访问构建变量的原因,也许我们可以在这里帮助您找到更好的解决方案。

    【讨论】:

    • 我正在尝试读取我的工件中的一个文件,但它不在我的脚本所在的同一目录中。
    • 因此您的 powershell 脚本应该将此值作为参数,在构建中,您将参数设置为当前工作的内容,对于发布,您可以根据发布/工件变量将其拼凑在一起,例如从“System.ArtifactsDirectory”开始并在工件中找到文件
    猜你喜欢
    • 1970-01-01
    • 2018-09-16
    • 2018-07-20
    • 1970-01-01
    • 1970-01-01
    • 2017-06-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多