Jenkins Pipeline で Groovy と shell step を混在させる¶
2018/03/04
そもそもは、Jenkins の Pipeline で日付ディレクトリを扱いたかった。
ちょっと調べていく打ちに script step ( script { ... }
) にて Groovy
を動かし、日時を取得できそうなので試した。
日時のフォーマットを扱う際に SimpleDateFormat
を利用するが、これは
import されてないので、きちんと import すること。また、
script step と shell step ( sh '...'
) は世界が違うので、定義済みのグローバル変数
env
を用いて世界をまたぐことが重要となる。
以下が例となる。
import java.text.SimpleDateFormat
pipeline {
agent none
stages {
stage('publish-html') {
agent any
steps {
script {
def dateFormat = new SimpleDateFormat("yyyyMMddHHmmss")
def current = dateFormat.format(new Date())
def baseDir = '/var/www/'
env.workDir = baseDir + '/' + current
env.htmlDir = baseDir + '/' + 'html'
}
sh "mv _build/html ${env.workDir}"
sh "ln -sfn ${env.workDir} ${env.htmlDir}"
}
}
}
}
参考¶
jenkins - How to set and reference a variable in a Jenkinsfile - Stack Overflow
検索し、 env 変数に気づいた。
-
env 変数の一次資料となる。
-
script step の一次資料となる。
How to use Date with Pipeline? – CloudBees Support
SimpleDateFormat の使い方。