传递给 jenkins 作业的参数不会在从机上更新

Parameters passed to jenkins job are not updated on slave machine

所以,我得到了一个 Jenkins 作业,它是一个参数化构建。我允许用户 select 他们想要执行构建的环境之一。此参数存储在变量 ${my_env} 中。然后我在 Job 的配置中使用 "Execute Windows Batch Command" 组件来执行以下命令:

setx /M envi %my_env%

这允许我在我的 windows 从机上将环境变量设置为 envi=my_env。 现在我在这台基于 python 的从机上有我的项目,我使用 os.environ['envi'] 在我的项目中获取环境变量并根据值进一步执行代码'envi' 个。 问题是当我第一次执行这项工作时,一切都很好。它获取环境变量 'envi' 的正确值并根据环境 selected 执行正确的代码。但是当我第二次执行它时,从构建参数中选择不同的环境,它不会在我的项目中更新,而是选择环境变量的旧值 'envi'。我已经使用 Setx 命令验证了环境的实际值已更新,但我的 python 项目仍然获取旧值。有人有什么想法吗?

根据 setxset 变量在 windows 中的工作,setx 将永久更新该值,但不会立即使其可用。 set 将使其立即可用但不是永久可用。所以你必须同时使用两者才能立即工作。所以代码会像:

SET XYZ=<value>
SETX /M XYZ <value>

这将使 XYZ 值在此会话中设置并使其永久化。我正在添加一些有用的链接供您自己学习。希望这有帮助。

  1. https://superuser.com/a/916652/652923
  2. https://superuser.com/a/176788/652923