JenkinsのジョブでJenkinsをバックアップして結果をSlackに通知する

JenkinsのジョブでJenkinsをバックアップして結果をSlackに通知する

こんにちは。

Jenkins記事が続いておりますw

今回は、JenkinsのバックアップをJenkinsのプロジェクトでバックアップをとり、その結果をSlackに通知する方法を紹介したいと思います。

関連する記事:Azure上のCentOS7にJenkinsを構築 関連する記事:JenkinsとSlackを連携する+GitHub連携準備

前提状況

  1. Slack連携ができていること。
  2. バックアップ先の領域が準備されていること。今回は、ファイルサーバをマウントしたパスを/mnt/backupとしています。

Jenkinsにプラグインをインストール

バックアップに利用するプラグインをインストールします。

  1. Jenkinsの管理プラグインの管理と進み、フィルターにExclusive Execution Pluginと入力しインストールします。以下の参考画像はインストール済みのため出ておりません。(インストール済みに出ます)

backup jenkins by himself 1

ジョブを作成する

バックアップ用のスクリプトを公開されている方がおられますのでありがたく使わせていただきました。

  1. 新規ジョブ作成から、ジョブの名称を入れ、フリースタイル・プロジェクトのビルド を選択しOKで進みます。

backup jenkins by himself 2

1.ソースコード管理の部分はGitにチェックをいれ、Repository URLにhttps://github.com/sue445/jenkins-backup-script.gitを入力します。続けて、Branch Specifierに0.0.3と入力します。 backup jenkins by himself 3

  1. ビルド・トリガの部分は定期的に実行にチェックをいれ、0 3 * * *と入力します。これは毎日AM3:00に実行するという意味になりますので、適宜変更してください。

backup jenkins by himself 4

  1. ビルド環境の部分はビルドを排他的に実行にチェックを入れます。

backup jenkins by himself 5

  1. ビルドの部分はビルドの手順の追加からシェルの実行を選び、以下のように入力します。
./jenkins-backup.sh $JENKINS_HOME /mnt/backup/backup_`date +"%Y%m%d%H%M%S"`.tar.gz

続けて、ビルドの手順の追加からシェルの実行を選び、find /mnt/backup/backup_* -mtime +30 -deleteと入力します。1つめの設定はバックアップ設定、2つめの設定はバックアップファイルのローテーション設定になります。/mnt/backupの部分は任意です。また、ローテーションの+30の部分も残したい日数に変更してください。+30であれば、30日間保存になります。

  1. ビルド後の処理は、ビルド後の手順の追加からSlack Notificationを選びます。各項目任意でチェックをいれ最後のProject Channelに通知したいSlackのチャンネル名を記載します。Custom Messageの部分に、https://URL/job/${JOB_NAME}/${BUILD_NUMBER}/consoleTextと入力するとコンソール結果がSlackに通知され確認が簡単になります。入力後に保存ボタンを押してプロジェクトを保存します。

backup jenkins by himself 6

これでJenkinsの設定は終了です。

実行テスト

  1. プロジェクト画面から、ビルド実行ボタンをクリックします。

backup jenkins by himself 7

  1. 即実行され、Slackに通知されました。

backup jenkins by himself 8 コンソールログの最後を見るとFinished: SUCCESSとなっており正常に終了していることが確認できました。

あとがき

ビルド・トリガの部分で、0 3 * * *よりも、H 3 * * *を使用して間隔を設定してください。** という警告がでていたかと思います。

これは、AM3:00などと固定するのではなく、H 3 * * * と設定するのが推奨という意味です。

先ほどの設定であれば、AM3:00の1時間のどこかで実行するよ、という指定ですが、推奨の理由は、Jenkins全体でジョブの実行時間が重なった場合に、その時間に実行することができない(かもしれない)からのようです。

ここ最近、Jenkinsの便利さをじわじわ感じてきています。 それでは次回の記事でお会いしましょう。

norikazum