Jenkins LTS も2系がリリースされたことですし、そろそろ本格的に移行を始めないとまずいよなーということで構築中です。
まずは、普段一番よく使っている svn のコミットを git にプッシュするジョブを移植しました。
(本当は逆がいいんだけど、そのうち開発フローを見直す予定…)
できたのがこちら。ちょっと詰まったところだけ解説していきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
node {
withEnv([ 'SVN_LOGFILE=..\\svnlog.txt' ]) {
stage 'make commit message'
env.SVN_REPO = SVN_REPO
env.ISSUE_NUMBER = ISSUE_NUMBER
if ( CommitMessage == "" ) {
bat '' '
for /f "tokens=1,2" %%i in ( \'svn info http:
if "%%i" == "Revision:" (
call :setr %%j
goto :EOF
)
)
goto :EOF
:setr
chcp 65001
SET LANG=ja_JP.UTF-8
SET REVISION=%1
if exist %SVN_LOGFILE% del /F %SVN_LOGFILE%
@echo %%c >> %SVN_LOGFILE%
)
if "x%ISSUE_NUMBER%" == "x" (
@echo update r%REVISION% >> %SVN_LOGFILE%
) else (
@echo update r%REVISION% #%ISSUE_NUMBER% >> %SVN_LOGFILE%
)
'' '
} else {
env.COMMIT_MESSAGE = CommitMessage
bat '' '
chcp 65001
SET LANG=ja_JP.UTF-8
echo %COMMIT_MESSAGE% > %SVN_LOGFILE%
'' '
}
bat '' '
@echo off
chcp 65001
SET LANG=ja_JP.UTF-8
type %SVN_LOGFILE%
'' '
stage 'git clone'
deleteDir()
git branch: 'develop' , url: 'git@github.com:srz-zumix/iutest.git'
stage 'svn export'
bat 'rm -rf *'
stage 'git commit'
bat 'git add .'
bat 'git commit -a -F %SVN_LOGFILE%'
stage 'git push'
bat 'git push git@github.com:srz-zumix/iutest.git develop'
}
}
|
どうしたら良いかわからない
Pipeline script をいざ書こうと設定を開いたものの…
どう書けばいいのかサッパリわからない。。。
まず何をしたらいいのか分からない迷子状態です。
第7回大阪Jenkins勉強会の LT を思い返すと、スクリプトを Generate してました。

ということで、
Pipeline Syntax を使ってみます。

① Sample Step から「bat: Windows Batch Script」を選んで出てくる ②「Batch Script」にバッチ処理をコピペで③「Generate Groovy」を押すと、スクリプトがに ④ に出てきます。
あれ?これで終わりじゃない?
でも、これじゃあ Pipeline になってないし、こんな感じにしたい!(し、まだ問題がある)
https://wiki.jenkins-ci.org/display/JENKINS/Pipeline+Stage+View+Plugin
ということで、次のステップ。
ステージを追加します。
ステージ
ここは詰まってないです。Pipeline Syntax で「stage」を選択して Generate すると
こんなスクリプトが出てくるので、コピーするだけ。簡単です。
問題はどうステージに分けるかですが、今回は以下のようにしました。
- コミットメッセージの作成
- git clone
- svn export
- git commit
- git push
ビルドパラメータを参照する
ビルドパラメータの参照ですが、今までのバッチ処理では環境変数として参照できていたので、Pipeline のバッチ処理でも環境変数で参照できると思ったのですが、そうでもないようです。
1 2 3 4 |
node {
stage 'env'
bat 'echo %TEXT_PARAM%'
}
|


このように「ECHO は <ON> です。」と出力されます。
では、どうしたらよいか。
Getting Started with Pipeline
こちらによれば、ビルドパラメーターは Groovy の変数としては見えるようです。
というわけで、以下のように環境変数に set して対応しました。
1 2 3 4 5 |
node {
stage 'env'
env.TEXT_PARAM=TEXT_PARAM
bat 'echo %TEXT_PARAM%'
}
|

これでビルドパラメーターがバッチ処理から見えるようになりました。
input
動作確認ができるまで、最後の git push ステージに input を入れて push されないようにして検証してました。
これなんですが、
第7回大阪Jenkins勉強会のときに川口さんがもっといい方法があるよ~的なことを言っていた気がしたのですが、忘れてしまいました。。。
なんだっけなぁ
最後に
最後に出来上がったパイプラインの実行結果です。
さらに、せっかくなので blueocean で表示。


blueocean についてはこっちを参照してください。
ブログズミ: [Jenkins] Blue Ocean を試してみる
さて、これで Pipeline がどんなものか分かりました。
これからは積極的に使っていこうと思います。
では。