jenkinsとBitbucketの接続 in CentOS7.2
実現したい流れ
- ローカル環境でBitbucketにPUSH
- Bitbucket から jenkins にPUSHを通知
- jenkins が Bitbucket から変更を取得
- 変更を取得し、指定したディレクトリに変更を反映(自動デプロイ)
jenkinsのインストールはこっち
jenkinsが動くサーバー側
1.公開鍵と秘密鍵の作成
Bitbucketに登録するための公開鍵とjenkins側に登録するための秘密鍵を生成する。
/etc/passwdの修正
jenkinsユーザにスイッチできるように修正しておく。
jenkins:x:994:992:Jenkins Automation Server:/var/lib/jenkins:/bin/bash
jenkinsユーザにsuしkeygen
$ sudo su jenkins
bash-4.2$ ssh-keygen
おまけ(参考まで)
keyの作成はjenkinsユーザにスイッチしなくてもいける。
$ sudo -u jenkins ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/var/lib/jenkins/.ssh/id_rsa):
Created directory '/var/lib/jenkins/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /var/lib/jenkins/.ssh/id_rsa.
Your public key has been saved in /var/lib/jenkins/.ssh/id_rsa.pub.
The key fingerprint is:
0e:02:68:56:1b:3f:c8:1d:ea:55:95:46:db:52:25:92 jenkins@server
The key's randomart image is:
+--[ RSA 2048]----+
| o . .o+oo.. |
| .o B o E= . |
|.o.= = .o . |
|o ... . . |
| .. . S |
| . o |
| . |
| |
| |
+-----------------+
Bitbucket側の準備
今回は、リポジトリに対しての設定ではなく、ユーザーに対しての設定メニューからSSH鍵を登録する。そのため対象リポジトリにアクセス権限のあるいちユーザーの設定で鍵の登録をする。
1. 公開鍵の登録
設定>セキュリティのSSH鍵から鍵を追加する。
/var/lib/jenkins/.ssh/id_rsa.pub
「Label」「Key」を入力して鍵を追加します。「Key」の内容は先ほどの、id_rsa.pub
2. WebHookの登録
今回は、リポジトリに対しての設定からWebhooksの登録をする。
「Add webhook」
URLは、
http://[jenkinsドメイン]/git/notifyCommit?url=git@bitbucket.org:[リポジトリ名]
Triggerに関してはお好みで。
jenkins側
新規ジョブ作成
jenkins側にジョブを登録する。
「ジョブの名前」を入力、「フリースタイル・プロジェクトのビルド」を選び、OK。
ソースコード管理「Git」
認証情報では、Bitbucketのログインユーザを選択する。
「追加」ボタンで認証情報を追加する。
Domain:グローバルドメイン
種類:SSHユーザ名と秘密鍵
スコープ:グローバル
秘密鍵:Jenkinsマスター上の~/.sshから
うまく認証できないと
こんな感じでエラーになり、エラーが表示されなければ正しく認証されている。
次に、リポジトリ・ブラウザも入力する。
リポジトリのHTTPSでCloneするURLを入力。
SCMをポーリングはいったん空でOK。
これで準備OKです。
developブランチのPUSHをトリガーにしていたので
こんな感じで、Bitbucket側にPUSHされると、jenkins側でビルド履歴が溜まっていく。
jenkins と Bitbucketの連携はできた。