【问题标题】:How can I pass variables to post-build actions in Jenkins?如何将变量传递给 Jenkins 中的构建后操作?
【发布时间】:2016-06-08 10:48:32
【问题描述】:

我正在尝试在构建后操作中发送一封电子邮件,内容设置为我在构建操作中计算的一些结果。我似乎无法将 shell 代码中的变量传递给任何构建后的操作。

我尝试过使用 EnvInject,但没有成功。

我错过了什么?

【问题讨论】:

    标签: jenkins


    【解决方案1】:

    和往常一样,我在发布问题后立即找到了解决方案。

    我设法通过在 shell 脚本位中添加类似的东西来解决它:

    EMAIL_CONTENT=$(cat <<EOF
    Some content here.
    Some content there.
    EOF
    )
    
    EMAIL_RECIPIENTS="someone@example.com"    
    
    touch email_properties
    echo "EMAIL_CONTENT=${EMAIL_CONTENT}" >> email_properties
    echo "EMAIL_RECIPIENTS=${EMAIL_RECIPIENTS}" >> email_properties
    

    然后,在构建后操作中,我使用Trigger parametrized build on other projects 和Parameters from properties file 选项来触发其他一些工作,其唯一目的是通过电子邮件向我发送这些凭据。这有点解决方法,但它有效。

    【讨论】:

    • 我在这里也有类似的问题,如果我理解您的解决方法:您创建一个属性文件,通过trigger parameterized build... 触发下游作业。我能够将属性文件中的参数传递给下游作业,但电子邮件触发器无法使用它。我使用 Script - After Build 和触发脚本build.envVars["GO"] == 'Y'。你是怎么让它工作的? stackoverflow.com/questions/45470021/…
    • 真的很抱歉,@Heinz,我已经很久没有这样做了。我认为那里有一个字段,例如“从文件加载属性”,它只会在电子邮件触发器中读取 email_properties 文件。但我很抱歉,这是很久以前的事了。 :(
    • Trigger parametrized build on other projects 在 Jenkins 版本 2.190 中似乎不再存在
    • @Scott 你需要安装这个插件wiki.jenkins-ci.org/display/JENKINS/…
    • 如果您没有看到 Trigger parameterized build on other projects 作为构建后操作,那么您可能需要安装此插件 wiki.jenkinsci.org/display/JENKINS/Parameterized+Trigger+Plugin 对于此示例,您使用 email_properties 作为属性文件名。然后在您正在调用的参数化 Jenkins 构建或项目中,通过选择 This project is parameterized 并填写名称,确保将属性文件的键定义为字符串参数。在这种情况下,String parameters 的名称是 EMAIL_CONTENT 和 EMAIL_RECIPIENTS
    猜你喜欢
    • 2010-10-05
    • 2015-06-20
    • 2020-08-26
    • 1970-01-01
    • 2021-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多