Git で Jenkins のバックアップをしてみる
先日突然会社で使ってる Jenkins が起動しなくなってしまいました。さすがにもう二度とそんな思いはしたくないので、バックアップを取ることにしました。
Backup Plugin - Jenkins - Jenkins Wiki を使ってもいいんですが、git 使えば差分バックアップになるし、好きな時点に戻せて素敵なんじゃないかと思って git を使ってバックアップを取ることにしてみました。
この記事はその時のメモみたいなものです。
リポジトリの作成
まずは git のリポジトリを作ります。せっかくなのでスクリプトコンソールを使ってみます。スクリプトコンソールを開いて、以下を実行します。
dir = System.properties["JENKINS_HOME"] def git = { Object[] cmd -> println new ProcessBuilder(["git"] + cmd.toList() as String[]).directory(new File(dir)).start().text } git "init" git "config", "user.name", "Jenkins Backup" git "config", "user.email", "jenkins@${InetAddress.localHost.hostName}" new File("${dir}/.gitignore").text = """\ *.log *.log.? *.log.?? jobs/*/workspace jobs/*/builds """ git "add", "--all" git "commit", "-m", "Initial commit"
これで /var/lib/jenkins に git のリポジトリができます。除外対象は workspace, builds とログファイルにしました。
バックアップの設定
次に Hudson環境のバックアップ - ふぞろいのGENGOたち を参考にして、Exclusive Execution Plugin を入れて backup job を作ります。job は以下のように設定します。
- ソースコード管理システム: なし
- ビルドトリガ: 定期的に実行
- スケジュール: @daily
- ビルド環境:
- ビルドを排他的に実行: ON
- ビルド:
- シェルの実行:
#!/bin/sh cd $JENKINS_HOME git add --all && git commit -m "$BUILD_TAG" git gc
以上で準備完了です。あとはためしにビルド実行をしてみて、青くなればめでたしめでたしです。