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

  • 139
    Like
  • 0
    Comment
More than 1 year has 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本体
  • ビルド履歴
  • 成果物

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

参考記事