JenkinsのビルドステップでGroovyスクリプトを使用して、ビルド時間を計算し、シェルスクリプトで実行したい文字列に値を入れます。Groovyからシェルステップへの値の解析
私はgroovyで複数の方法でやってみましたが、まだ運がありません。 Jenkins Slaveで正確な文字列を実行するとうまくいきますので、その文字列をシェルスクリプトのステップに渡して後で実行したいと思います。それをどうやってやりますか?
私は環境変数を設定することを考えましたが、現在はそれらを取得する方法しか見つけていません。
import hudson.model.*
import java.math.*
def apiKey = "secret"
def buildId = System.getenv("BUILD_ID")
def buildNo = System.getenv("BUILD_NUMBER")
def jobName = System.getenv("JOB_NAME")
jobName = jobName.replaceAll("\\.","-")
def nodeName = System.getenv("NODE_NAME")
def (startDate, startTime) = buildId.tokenize("_")
def (YY, MM, DD) = startDate.tokenize("-")
def (hh, mm, ss) = startTime.tokenize("-")
MathContext mc = new MathContext(200);
Date startDateTime = new GregorianCalendar(YY.toInteger(), MM.toInteger() - 1, DD.toInteger(), hh.toInteger(), mm.toInteger(),
ss.toInteger()).time
Date end = new Date()
long diffMillis = end.getTime() - startDateTime.getTime()
long buildDurationInSeconds = (diffMillis/1000);
String metric = String.format("%s.jenkins.%s.%s.%s.duration %s",
apiKey, nodeName, jobName, buildNo, buildDurationInSeconds)
def cmd = 'echo "+metric+" | nc carbon.hostedgraphite.com 2003'
この手順の後、私は "cmd"の値を渡すジェンキンズの "シェルを実行する"ステップを呼び出すでしょう。誰かがシェルを実行しない本当の助け
その戻り、次のエラー: '+ ./mycmd.sh./mycmd.sh:行2:[エコー:コマンドが見つかりません NC:ポート範囲がvalid'ない ホワイトトchは実行中ですが、このcmdをコマンドラインと同じように実行してから、この.shファイルで実行することの違いはまだ分かりません。 – WillBroadbent