Edited at

Jenkinsのバックアップとリストアについてメモ

More than 5 years have passed since last update.

Jenkinsマスタが壊れた時のリカバリ(再構築)や、同じ設定のJenkinsを複数立てたい時などのために、Jenkinsの設定情報やプラグインのバックアップ・リストアについてメモ。


設定情報、静的コンテンツ


バックアップ

該当するのは以下のファイル。



  • ${JENKINS_HOME}直下の*.xml

  • ${JENKINS_HOME}/jobs/${JOB_NAME}/config.xml


  • ${JENKINS_HOME}/userContent以下の全ファイル

バックアップの方法としては、以下のものがある。



  • くりにっきさんjenkins-backup-script


    • 設定情報だけでなくプラグインもバックアップ対象。バックアップだけならこれ一つでOK。

    • あくまでスクリプトなので、実行のためのジョブは自分で定義する必要がある




  • thinBackup Plugin


    • バックアップ、リストアがJenkinsの画面から簡単にできる(主観)

    • プラグインはバックアップの対象外



リポジトリでバージョン管理したい場合は、自分でスクリプトを作りこむなどして対応する。Subversionの例は公式に記述がある。かなり古い(2010年2月)記事だけど、ポイントは今も変わってないはず。

https://jenkins-ci.org/content/keeping-your-configuration-and-data-subversion


リストア

ファイルを同じ場所に戻して、「設定の再読み込み」やJenkinsの再起動をする。

ただしownerやgroupが間違っていると、読み込みされないので注意。


プラグイン


バックアップ

該当するのは以下のファイル



  • ${JENKINS_HOME}/plugins直下の*.jpi


リストア

jpiファイルを${JENKINS_HOME}/pluginsに置いてJenkinsを再起動すればOK。

プラグインマネージャで確認しても、きちんと「インストール済みプラグイン」として認識されているはず。


プラグインの管理機構

仕事で使っているCI環境では、jpiファイルもすべて(約30プラグインで20MB超)リポジトリにチェックインしている。これはバッドプラクティスの気もするが、20MBくらいなら気にするサイズでもないし、頻繁に更新するものでもないので、当面はこれでいいかなぁと思っている。

とは言え、Jenkinsのプラグインにおける、bundlerやMavenのような依存管理機構も少し考えてみる。

今インストールされているプラグインの一覧を取得するには、JenkinsのRemote Access APIを使えば可能。

http://xx.xx.xx.xx:8080/pluginManager/api/xml?depth=1

http://xx.xx.xx.xx:8080/pluginManager/api/json?depth=1


バックアップ・リストアの対象とはしないもの


  • Jenkins本体

  • ビルド履歴

  • 成果物

この辺は大事に保管しておくものでもないし、バックアップしようとするとディスクを圧迫するので、対象外。


参考記事