如何在 Jenkins/Hudson 中以编程方式设置环境变量?
Posted
技术标签:
【中文标题】如何在 Jenkins/Hudson 中以编程方式设置环境变量?【英文标题】:How to set an environment variable programmatically in Jenkins/Hudson? 【发布时间】:2012-06-03 02:20:47 【问题描述】:我在 Jenkins 作业的预构建步骤中有两个脚本,第一个是 perl 脚本,第二个是使用 groovy 插件的系统 groovy 脚本。我需要第二个 groovy 脚本中第一个 perl 脚本的信息。我认为最好的方法是设置一些环境变量,并且想知道如何实现。
或任何其他更好的方法。
感谢您的宝贵时间。
【问题讨论】:
本题涉及项目特定环境变量,但全局环境变量请看this answer。 【参考方案1】:在构建步骤之间传播环境变量的方法是通过EnvInject Plugin。
以下是一些以前的答案,展示了如何做到这一点:
How to set environment variables in Jenkins? Jenkins : Report results of intermediate [windows batch] build steps in email body但是,在您的情况下,在一个构建步骤中写入文件并在另一个构建步骤中读取该文件可能更简单。为确保您不会意外读取文件的早期版本,您可以在文件名中包含 BUILD_ID
。
【讨论】:
每个构建的工作区始终是独立的,因此无需添加build_id
。如果你添加 build_id,你最终会得到很多文件。如果旧文件存在(或直接覆盖它),最好从删除旧文件开始。
这真的取决于你的用例。如果要保留文件的内容以供以后使用,则需要在文件名中添加 build-id。如果您只使用最新的构建信息,那么您可以随时替换它。【参考方案2】:
在作业配置中使用EnvInject Plugin,您应该使用Inject environment variables to the build process / Evaluated Groovy script
。
根据设置,您可以执行Groovy
或shell
命令并将其保存在包含环境变量的映射中:
示例
通过execute
方法获取命令结果:
return [DATE: 'date'.execute().text]
或与Groovy
等效(如果存在):
return [DATE: new Date()]
【讨论】:
以上是关于如何在 Jenkins/Hudson 中以编程方式设置环境变量?的主要内容,如果未能解决你的问题,请参考以下文章