如何从Jenkins获取最新版本的构建时间戳? 我想在post build actions中的Email主题中插入此值。
答案 0 :(得分:17)
构建时间戳插件将是在构建过程中获取TIMESTAMPS
的最佳答案。
按照以下简单步骤启用"BUILD_TIMESTAMP"
变量。
第1步:
Manage Jenkins -> Plugin Manager -> Installed...
Search for "Build Timestamp Plugin".
Install with or without Restart.
第2步:
Manage Jenkins -> Configure System.
Search for 'Build Timestamp' section, then Enable the CHECKBOX.
Select the TIMEZONE, TIME format you want to setup with..Save the Page.
<强> USAGE:强>
When Configuring the Build with ANT or MAVEN,
Please declare a Global variable as,
E.G. btime=${BUILD_TIMESTAMP}
(use this in your Properties box in ANT or MAVEN Build Section)
use 'btime' in your Code to any String Variables etc..
答案 1 :(得分:15)
注意:这在Jenkins 1.597中已更改,有关迁移的详细信息,请参阅here
您应该能够通过导航到https://<your-jenkins>/env-vars.html
来查看构建期间可用的所有全局环境变量。
将https://<your-jenkins>/
替换为您用于访问Jenkins网页的网址(例如,可能是http://localhost:8080/env-vars.html
)。
其中一个环境变量是:
BUILD_ID
The current build id, such as "2005-08-22_23-59-59" (YYYY-MM-DD_hh-mm-ss)
如果您使用jenkins可编辑电子邮件通知,则应该可以在电子邮件的主题行中使用${ENV, var="BUILD_ID"}
。
答案 2 :(得分:4)
尝试使用Build Timestamp Plugin
并使用BUILD_TIMESTAMP
变量。
答案 3 :(得分:1)
我知道它迟到了回答这个问题,但我最近在没有安装任何插件的情况下找到了更好的解决方案。我们可以创建格式化的版本号,然后可以使用创建的变量来显示构建日期/时间。 创建步骤:构建环境 - &gt;创建格式化版本号:
环境变量名称: BUILD_DATE
版本号格式字符串: $ {BUILD_DATE_FORMATTED}
就是这样。只需在电子邮件主题行中使用上面创建的变量 $ {ENV,var =&#34; BUILD_DATE&#34;} ,您将获得当前版本的日期/时间。
答案 4 :(得分:1)
从脚本(Unix脚本)生成环境变量:
echo "BUILD_DATE=$(date +%F-%T)"
答案 5 :(得分:1)
可以做到这一点的一种方法是在全局环境部分中使用shell脚本,这里,我使用的是UNIX时间戳,但是您可以使用任何与shell脚本语法兼容的时间格式:
pipeline {
agent any
environment {
def BUILDVERSION = sh(script: "echo `date +%s`", returnStdout: true).trim()
}
stages {
stage("Awesome Stage") {
steps {
echo "Current build version :: $BUILDVERSION"
}
}
}
}
答案 6 :(得分:1)
BUILD_ID
曾经用于提供此信息,但自Jenkins 1.597开始,他们就对其进行了更改以提供内部版本号。有关更多信息,请参见this。
您可以使用Build Time Stamp插件来实现此目的,如其他答案中所述。
但是,如果不允许或不愿意使用插件,请遵循以下方法:
def BUILD_TIMESTAMP = null
withCredentials([usernamePassword(credentialsId: 'JenkinsCredentials', passwordVariable: 'JENKINS_PASSWORD', usernameVariable: 'JENKINS_USERNAME')]) {
sh(script: "curl https://${JENKINS_USERNAME}:${JENKINS_PASSWORD}@<JENKINS_URL>/job/<JOB_NAME>/lastBuild/buildTimestamp", returnStdout: true).trim();
}
println BUILD_TIMESTAMP
这似乎有些矫kill过正,但可以成功完成工作。
应该添加用于访问Jenkins的凭据,并且需要在withCredentials
语句中代替'JenkinsCredentials'
传递ID。如果您的Jenkins不使用身份验证,则可以忽略该步骤。
答案 7 :(得分:0)
下面的答案显示了使用描述设置器插件&#34;&#34; regexp功能的另一种方法。这解决了我的问题,因为我无法在Jenkins上安装新的插件,因为权限问题:
答案 8 :(得分:0)
如果要为从浏览器到jenkins服务器的每个请求添加时间戳。 您可以参考jenkins碎屑发行者机制,还可以修改/scripts/hudson-behavior.js,在此处添加修改。因此它将时间戳转换为服务器。
/**
* Puts a hidden input field to the form so that the form submission will have the crumb value
*/
appendToForm : function(form) {
// add here. ..... you code
if(this.fieldName==null) return; // noop
var div = document.createElement("div");
div.innerHTML = "<input type=hidden name='"+this.fieldName+"' value='"+this.value+"'>";
form.appendChild(div);
}
答案 9 :(得分:0)
您可以使用Jenkins对象直接获取开始时间
Jenkins.getInstance().getItemByFullName(<your_job_name>).getBuildByNumber(<your_build_number>).getTime()