【问题标题】:Jenkins: setting env variable from shell scriptJenkins:从 shell 脚本设置环境变量
【发布时间】:2013-02-06 15:07:05
【问题描述】:

我有一个 bash 脚本,我使用“执行 shell”从 Jenkins 作业执行。 该脚本启动一个 EC2 实例并设置一个包含新实例主机名的 host 变量。

我想将新实例的主机名(脚本变量:host)设置为 Jenkins 环境变量,以便我可以将其传递给下游作业(可能使用 Build Flow 插件)。

知道怎么做吗?

谢谢

【问题讨论】:

    标签: shell jenkins environment-variables


    【解决方案1】:

    你可以安装一个插件来注入你的变量:EnvInject Plugin

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

    【讨论】:

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

    我最终使用一个文件在构建之间传播数据。 第一个构建创建一个文件,其中包含我需要传播的信息(新创建的 EC2 实例的主机名)。 该文件如下所示:

    host.name=ec2.123.3345.amazon.com
    

    我使用 EnvInject 插件读取文件并“注入”属性,然后在下一个构建中可用(我使用构建流程插件来编排构建)。

    【讨论】:

    • 我也遇到了同样的问题,可惜目前还没有其他解决方案。
    • 如果您使用的是 NANT,则可以使用 EnvInject 插件注入环境变量并将其设置为某个默认值。然后在 NANT 脚本中使用 setenv 任务将其设置为正确的值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-04
    • 2020-05-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多