【问题标题】:Jenkins: adding CUSTOM variables for a buildJenkins:为构建添加自定义变量
【发布时间】:2014-11-13 07:52:25
【问题描述】:

Jenkins 为 Android 成功创建构建,然后上传到 S3 服务器。构建包含环境名称、版本号,每个构建都不同。这些版本号、环境是从 POM 配置文件中读取的。 s3 http://example.com/android/staging/ABC-Project-v0.1.58-staging-aligned.apk的示例 URL

我通过这个得到文件名

cd $WORKSPACE/target/
FILE_NAME=$(echo *aligned.apk)

所以我的链接是http://example.com/dev/FILE_NAME

但这仅在 shell 脚本中可见。我想在电子邮件模板中使用它,以便软件测试工程师可以访问它。我一直在寻找一种方法,可以暂时将此值分配给变量,然后将其放入电子邮件模板中。

电子邮件模板是:

<html>
<body>
<h3>$PROJECT_NAME</h3>
<h4>Build #$BUILD_NUMBER - $BUILD_STATUS</h4>
<h4>${CAUSE}</h4>
<h4>$DEFAULT_CONTENT</h4>
<h4>Git Branch: ${GIT_BRANCH}</h4>

Changes since the last build:

${CHANGES}

</body>
</html> 

【问题讨论】:

    标签: android git maven jenkins


    【解决方案1】:

    假设电子邮件步骤是 Jenkins 构建过程的稍后部分,您需要使用 EnvInject plugin。从它自己的示例用例中,您可以:将变量作为从前一个构建步骤填充的文件中获得的构建步骤注入

    您可以在解析 POM 时设置这些(直接在 Maven 中,或者您可以使用 Groovy plugin 和 XmlSlurper(我们实际上是这样做的)通过构建步骤手动解析它),然后它们就是稍后可用作电子邮件模板脚本的环境变量(例如$CHANGES$CAUSE 等)。

    【讨论】:

    • 所以你的意思是我在处理 pom 文件时必须把那个 FILE_NAME 放到一个文件中。后来我必须阅读和解析它并分配要在电子邮件模板中使用的值?
    • 这是另一种方法,但使用该插件更容易,因为您在前面的步骤中设置的任何环境变量(例如,作为 Maven 步骤的一部分运行的脚本)都可以传递到后面的步骤(例如您的电子邮件脚本)。有关详细信息,请参阅EnvInject docs...
    【解决方案2】:

    好的,我将提供两件有点难看但效果很好的东西: 在两者中,您都可以将输出(您想要的链接)放在 /tmp/job.output.tmp 文件中,然后:

    • 使用构建后任务插件 - 当工作 ERROR 或 EXCEPTION 或您想要的任何东西在那里时,使用文件的上下文从 bash 运行 sendEmail 给您想要的人。 有点狂欢,一切都很棒。

    • 这可能更好:使用https://wiki.jenkins-ci.org/display/JENKINS/Email-ext+plugin 可编辑邮件通知向您的用户发送控制台输出/压缩文件/未按您喜欢的方式压缩,当构建失败/再次稳定等等。他们有很多选择..

    【讨论】:

      猜你喜欢
      • 2014-02-05
      • 1970-01-01
      • 1970-01-01
      • 2019-10-09
      • 2016-06-28
      • 2017-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多