JenkinsによるGit連携の自動化

Jenkinsをカスタマイズすることで、CDがかなり便利になってきた。

デプロイ後にメール通知までJenkisで自動化したが、デプロイの前にリリースする内容のタグ付けもJenkinsで自動化したい。

ではどうすれば良いか?

JenkinsにGit Pluginを入れるとこういったことが簡単でセキュアに自動化できる。他にもgit pushgit mergegit merge;git pushといったこともできる。

Git Pluginとは?

そのまんまなので省略。2015年3月現在のバージョンは2.3.5。

インストール

[Jenkinsの管理]→[プラグインの管理]→[利用可能タブ]を選択して、Git Pluginを選択してインストール。

初期設定

Credential設定

認証に関する情報を設定する。

[認証情報]→[グローバルドメイン]→[認証情報を追加]を選択して、認証情報を追加する。

設定できる情報は

  • ユーザー名とパスワード
  • SSH ユーザー名と秘密鍵
  • 証明書

で、ユーザー名とパスワードの場合、

  • スコープ:グローバルとシステムがある。git pull/git pushなどに使用する場合はグローバルで作成する
  • ユーザー名/パスワード/説明:そのまんまの意味

となる。

pushをJenkinsで実行する

シェルで実行するか、Git Publisherで実行するか選択できる。前者はsshで接続しない場合はパスワードが見えてしまい、sshで接続する場合はJenkinsを実行しているユーザになるという制約条件がある。

以下、Git Publisherでの設定

  • Push Only If Build Succeeds:ここをチェックすると、ビルド成功時のみGitのコマンドを行う。ビルドに失敗したものをPushする意味はないので、基本チェックをつける

Tag

  • Tag to push:タグ付けする名前
  • Tag message:タグのメッセージ(git tag -mで指定する部分)
  • Create new tag:ここをチェックすると、タグを作る(=つけないとタグを作らない)
  • Update new tag:ここをチェックすると、タグを更新する
  • Target remote name:originなどを指定

Branch

  • Branch to push:pushするブランチ名
  • Target remote name:originなどを指定

まとめ

これらを駆使することで、タグ付けした後にデプロイし、その後にメール通知がJenkinsで自動的に可能となる。