2013年6月7日

【Jenkins】ジョブの設定をバージョン管理



設定ファイルを間違えて更新してしまって、ビルド出来なくなったなんて事ありませんか?

僕は良くあります。

なので、Jenkinsのジョブの設定をバージョン管理するようにいたしました。


まず、~/.jenkins/jobsへ移動。
そこで、設定ファイルは<Job-name>/config.xmlなので、

$ git init
$ git add */config.xml
として、config.xmlのバージョン管理を開始します。

次に、設定ファイル以外は基本的にSCMやJenkins側で管理出来るので、
.gitignoreを作成します。

*/builds                                                                                                                                                                                                                                      
*/config-history
*/htmlreports
*/javadoc
*/lastStable
*/lastSuccessful
*/scm-polling.log
*/subversion.credentials
*/svnexternals.txt
*/workspace

作成したら追加します。
$git add .gitignore

次に、Jenkinsのジョブを作成します。

  • 古いビルドは破棄
  • ビルドの保存最大数は1
  • SCMの設定はなし
  • ビルド・トリガは良くビルドするジョブを複数指定

最後に、ビルドの部分ですが、シェルの実行を選び、
cd ~/.jenkins/jobs/
git add *
NOW=`date +"%Y-%m-%d %H:%M:%S"`
git commit -am "Save Configuration ${NOW}"

と記述します。

これで、他のジョブが終われば、自動で設定を保存してくれますが、
config.xmlに変更が無いとgit commit -am がエラーで返って来ます。

ビルドエラーのジョブがあるのは嫌なので、常に変更が掛かるnextBuildNumberをトラッキングします。

$cd ~/.jenkins/jobs
$git add */nextBuildNumber

とすると、nextBuildNumberは何かしらのジョブが終わればビルド番号が変わるので、
常に更新されるファイルとなります。

これで設定ファイルをバージョン管理出来るようになりました。


ちなみに

元に戻す方法ですが、

$ git log --pretty=\"format:%ad %h (%an): %s\" --date=short
$ git show {コミット番号}:{ファイルパス}
$ git checkout {コミット番号} {ファイルパス}

とすれば元に戻ります。