Jenkinsのバックアップ

システム開発担当の読です。

私は耳が痛くなるので、イヤホンは好きではなかったのですが、最近購入したイヤホンは全然痛くならなかったです。
昔のイヤホンはインナーイヤー型というらしいですね、私にはこれが全く合いませんでしたが、
最近はカナル型というのが支流らしく、こちらは私にぴったりでした。
ただあまり安価なものだと、コードがすれた時の音がかなり大きく聞こえるので、その対策がされているモノを購入した方がいいかもしれません。

さて今回はJenkinsのバックアップを視点にプラグインを導入していきたいと思います。
JenkinsのバックアップはJENKINS_HOMEをコピーするだけでいいですが、
以下のプラグインを使用することで楽にバックアップを取ることができます。
Hudson環境のバックアップの記事を参考にさせていただきました。

BackupPlugin


プラグインをインストールすると、「Jenkinsの管理」内に「Backup manager」が追加されますので、そこから設定やバックアップ、リストアを行えます。

設定

「Backup manager」内の「Setup」で設定画面が開かれます。

Hudson root directory :相対パス時のルート
Backup directory :バックアップの保存先(設定していない場合はそのまま削除されます)
Format :圧縮形式
File name template :ファイル名(初期値はbackup_日付.時間となります)
Custom exclusions :バックアップさせたくないフォルダ下を指定
Verbose mode :バックアップしたファイルをすべて表示する
Configuration files (.xml) only :XMLファイルのみ摘出してバックアップする
No shutdown :バックアップ時シャットダウンさせない
Backup job workspace :指定したジョブを含むまたは除外する
Backup builds history :ビルド履歴もバックアップ
Backup maven artifacts archives :Mavenのビルド結果もバックアップ
Backup fingerprints :プロジェクトバージョン情報のバックアップ

バックアップ

「Backup manager」内の「Backup Hudson configuration」でバックアップ。
「Restore Hudson configuration」でリストア。

Exclusive Execution Plugin + NAnt

こちらはExclusive Execution PluginとNAntを使用したバックアップ方法です。
「Exclusive Execution Plugin」と「NAnt」双方必要になります。
※NAntのインストールは割愛させていただきます

NAntの設定

「Jenkinsの管理」-「システムの設定」でNAntを追加します。

name :一意に認識出来る名前
NANT_HOME :NAntが存在するフォルダパス

ジョブの作成と設定

まずバックアップ用のジョブを作成します。
「新規ジョブ作成」から「フリースタイル・プロジェクトのビルド」でジョブを作成してください。

次に各設定を行います。
■バックアップの保存先

■定期的にバックアップを実行させる

■このジョブをシャットダウンモードで実行させる

■NAnt用のdefault.buildを作成する

<?xml version="1.0" encoding="UTF-8"?>
<project default="backup">
    <target name="backup" >
        <zip zipfile="Jenkins_${label}.zip">
            <fileset basedir="JENKINS_HOME">
            <include name="**/*" />
            <exclude name="war/**" />
            <exclude name="jobs/*/workspace/**" />
            <exclude name="**log" />
            </fileset>
        </zip>
    </target>
</project>
zip :ファイル名(上記は下記の設定で指定したプロパティを使用してファイル名を作成しています)
fileset :Jenkinsがインストールされているフォルダを指定する
include :圧縮する範囲
exclude :バックアップから除外(上記は「war」と「workspace」以下を除外しています)

※下記の設定で「Nant Build File」を設定しない場合、このジョブのワークスペースに置いてください。
 

■NAntの設定

NAnt Version :使用するNAnt(上記で設定したNAntを選択してください)
Nant Build File :ビルドファイルを指定(今回はワークスペース内に置くので設定しません)
Targets :ターゲット(ビルドファイル内のバックアップ用に作成したターゲット名を指定してください)
Properties :その他プロパティ項目(今回はファイル名を日付にするために使用しています)

バックアップ


あとは、他のジョブと同じように使用すれば指定の場所に、バックアップファイルが出力されます。

最後に

「BackupPlugin」はとにかくゴタゴタしたことがなくて、簡単にバックアップが取れますね、でも定期的にバックアップが取れないようなのでそこは不便です。
「Exclusive Execution Plugin + NAnt」は少しゴタゴタしますが、定期的にバックアップを行えて、バックアップの成功/失敗も教えてくれますが、リストアは手動なのが面倒です。。。

今回はNAntを使用しましたが、MSBuildで出来るのかも試してみたいですね。