【问题标题】:EnvironementVariable not correct in AzureDevops pipe-lineAzure Devops 管道中的环境变量不正确
【发布时间】:2021-08-23 08:22:14
【问题描述】:

我的客户有一个本地 AzureDevops 设置。 我有一个专用的 Windows 服务器,用作构建服务器。代理安装并以用户 X 身份运行。

Java 应用程序是使用第三方创建的自定义脚本构建的。在 YAML 中使用此脚本启动构建:

cmd /c ""C:\Program Files\Git\bin\bash.exe" --login -i --
 ./deployment/buildKit.sh -kn $(buildnumber) -ah /C/apache-ant-1.10.9""

在我们不得不更改 Java 版本之前一切正常。在构建服务器上以用户 X 交互方式登录时,我安装了要使用的新 java 版本,更改了 JAVA_HOME,构建脚本运行良好,使用新需要的 java 版本没有错误。

如果我以用户 X 的身份在机器上运行 SET,我会得到:

JAVA_HOME=C:\Program Files\Java\jdk-11.0.6+10

我在 YAML 中添加了 SET 以查看使用了哪个 JAVA_HOME 并在我得到的日志中:

JAVA_HOME=C:\Program Files\AdoptOpenJDK\jdk-8.0.275.1-hotspot\

这是“旧”版本。因此构建失败。 任何想法为什么运行管道与 interactif 相比有不同的 JAVA_HOME ?又该如何解决呢?

【问题讨论】:

  • 你试过重启 build-agent 或 maschine 吗?代理仅在启动时读取这些变量,因此如果您更新 java 之类的程序并更新环境变量,代理仍将使用旧值
  • 天啊,这样的新手错误!!!!那成功了。谢谢。
  • @D.J.您能否将您的评论转换为回复,以便 Bril 将其标记为答案?
  • @KrzysztofMadej 确定

标签: azure-devops azure-pipelines azure-pipelines-build-task azure-pipelines-yaml


【解决方案1】:

构建代理仅在代理启动时读取环境变量。如果您在代理运行时更新/安装程序,代理将不知道环境变量已更新,并将旧值传递到构建过程。

在构建机器上更新或安装程序或 SDK 后,您应该重新启动构建代理,以便它重新读取更新后的环境变量。 p>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-09
    • 2020-09-06
    • 1970-01-01
    • 2023-02-04
    • 2020-06-22
    • 2020-04-02
    • 1970-01-01
    • 2019-09-01
    相关资源
    最近更新 更多