Jenkins:从Shell脚本设置环境变量

8
我有一个bash脚本,我通过“执行shell”从Jenkins作业中执行它。该脚本启动一个EC2实例,并设置包含新实例主机名的host变量。
我想将新实例的主机名称(脚本变量:host)设置为Jenkins环境变量,以便我可以将其传递给下游作业(可能使用Build Flow插件)。
有任何想法如何做到这一点吗?
谢谢
2个回答

8

我最终使用文件在构建之间传递数据。 第一个构建创建一个包含需要传递的信息(新创建的EC2实例的主机名)的文件。 该文件看起来像:

host.name=ec2.123.3345.amazon.com

我使用EnvInject插件读取文件并“注入”属性。然后在下一次构建中可以使用这些属性(我使用Build Flow插件来编排构建)。


2
我也遇到了同样的问题,很遗憾目前还没有其他解决方案。 - CSchulz
如果您正在使用NANT,则可以使用EnvInject插件注入环境变量并将其设置为某个默认值。然后在NANT脚本中使用setenv任务将其设置为正确的值。 - NotAgain

2

有一个插件可以安装,用于注入你的变量:EnvInject插件。

如果我理解你的问题正确,我认为这个简单的插件正是你所需要的。


我已经在看这个插件了,但是我找不到适合我需求的例子。 - Luciano Fiandesio
非常简单:您需要将新的“注入环境变量”作为第一个构建步骤添加,并指定您的路径,或者如果您愿意直接使用变量:https://wiki.jenkins-ci.org/display/JENKINS/EnvInject+Plugin - Vargan
很不幸,这比那要复杂一些。如果您仔细阅读我的原始帖子,要求是我需要运行一个内部设置变量“host”的shell脚本。这个变量应该以某种方式设置为Jenkins的环境变量。 - Luciano Fiandesio
为什么不在脚本外设置变量,然后再运行脚本呢? - Vargan
2
因为变量是在脚本内部创建的。每次启动新的EC2实例时都会生成一个新的主机名,我需要“提取”此主机名并将其传递给下一个作业。 - Luciano Fiandesio
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接