Hudsonのパイプラインプラグインを使用して、インラインパイプラインスクリプトで現在のタイムスタンプを取得します。ビルド表示名を設定します。
使用されたインラインgroovyスクリプト:
def jobName = env.JOB_NAME + "_" + new Date()
currentBuild.displayName = "$jobName"
node {
echo "job name $jobName"
}
コンソールのエラー:
org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException:
Scripts not permitted to use new Java.util.Date
また、これを使用することができます、私はmsでこれを必要としたので:
echo "TimeStamp: ${currentBuild.startTimeInMillis}"
echo "TimeStamp: ${Util.getTimeSpanString(System.currentTimeMillis())}"
文字列コンテキストでLocalDateTime
またはLocalDate
を使用して、スクリプトの承認を回避することもできます。これらはISO 8601のデフォルトを提供します:
script {
DATE_TAG = Java.time.LocalDate.now()
DATETIME_TAG = Java.time.LocalDateTime.now()
}
sh "echo ${DATETIME_TAG}"
最も直感的に使用できるAPIに応じて、時間を取得する方法は多数あります。
RunWrapper
currentBuild
グローバル変数を使用したAPI
final long startTime = currentBuild.startTimeInMillis
:long
ビルドが開始されたときの値(ミリ秒)final long scheduledTime = currentBuild.timeInMillis
:long
ビルドがミリ秒単位でスケジュールされたときの値final long buildDuration = currentBuild.duration
:ビルドにかかったミリ秒final String buildDurationAsStrong = currentBuild.durationString
:duration
as String
ホワイトリストJava.time
を使用 API、たとえば LocalDateTime
import Java.time.LocalDateTime
final LocalDateTime currentTime = LocalDateTime.now()
// do stuff with LocalDateTime
もちろん、スクリプトでシェルを作成して戻り値を使用する
final String currentTime = sh(returnStdout: true, script: 'date +%Y-%m-%d').trim()
そして、他の方法もあると確信しています。
Date
オブジェクトをフォーマットするだけです:
stage('Foo') {
steps {
script {
def now = new Date()
println now.format("yyMMdd.HHmm", TimeZone.getTimeZone('UTC'))
}
}
}