web-dev-qa-db-ja.com

hudsonのパイプラインプラグインを使用してインラインパイプラインスクリプトで現在のタイムスタンプを取得する

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
12

Jenkinsスクリプトはサンドボックスで実行されています。デフォルトでは、Groovyスクリプトには一部の操作に対する権限がありません。

許可なしで操作を実行すると、RejectAccessExceptionがスローされます。そのため、スクリプトを実行する必要があり、例外がスローされたら次の場所に移動します。

http://yourHost/jenkins/scriptApproval/

そして、必要な許可を承認します。

enter image description here

6
albciff

また、これを使用することができます、私はmsでこれを必要としたので:

echo "TimeStamp: ${currentBuild.startTimeInMillis}"

echo "TimeStamp: ${Util.getTimeSpanString(System.currentTimeMillis())}"
12
dsaydon

文字列コンテキストでLocalDateTimeまたはLocalDateを使用して、スクリプトの承認を回避することもできます。これらはISO 8601のデフォルトを提供します:

script {
  DATE_TAG = Java.time.LocalDate.now()
  DATETIME_TAG = Java.time.LocalDateTime.now()
}
sh "echo ${DATETIME_TAG}"
4

最も直感的に使用できるAPIに応じて、時間を取得する方法は多数あります。

  1. new Date()はその後script-security-pluginホワイトリストに追加されました

  2. RunWrappercurrentBuildグローバル変数を使用したAPI

    1. final long startTime = currentBuild.startTimeInMillislongビルドが開始されたときの値(ミリ秒)
    2. final long scheduledTime = currentBuild.timeInMillislongビルドがミリ秒単位でスケジュールされたときの値
    3. final long buildDuration = currentBuild.duration :ビルドにかかったミリ秒
    4. final String buildDurationAsStrong = currentBuild.durationStringduration as String
  3. ホワイトリストJava.timeを使用 API、たとえば LocalDateTime

    import Java.time.LocalDateTime
    final LocalDateTime currentTime = LocalDateTime.now()
    // do stuff with LocalDateTime
    
  4. もちろん、スクリプトでシェルを作成して戻り値を使用する

    final String currentTime = sh(returnStdout: true, script: 'date +%Y-%m-%d').trim()
    

そして、他の方法もあると確信しています。

4
mkobit

Dateオブジェクトをフォーマットするだけです:

stage('Foo') {
  steps {
    script {
        def now = new Date()
        println now.format("yyMMdd.HHmm", TimeZone.getTimeZone('UTC'))
    }
  } 
}
4
Camilo Silva