ユーザー認証ありのJenkinsとBitbucketプライベートリポジトリを連携

ユーザー認証を有効にした Jenkins と Bitbucket のプライベートリポジトリを連携させる手順です。前もって、Jenkins のインストールは済ませておき、ユーザー認証を設定しておきます。詳細は以下。

JenkinsをCentOS6にインストールしてユーザー認証設定 | EasyRamble
Bitbucket

スポンサーリンク

— 環境 —
CentOS 6.4
Jenkins 1.570

Jenkins 側で Bitbucket への SSH 接続用の鍵作成

Jenkinsインストール時に作成されたユーザー(jenkins)で鍵ペアを作成したいのですが、jenkins を yum でインストールしたので、jenkins は service account となっていました。そのままの jenkins アカウントではユーザーとしてログインできないので、事前に以下のように /etc/password を修正します。

/bin/bash を設定し以下のように変更。

これで、jenkins ユーザーとしてログインできる。

続いて、Bitbucket に公開鍵認証で SSH 接続するための公開鍵・秘密鍵の鍵ペアを作成します。

パスフレーズは空のまま Enter。

公開鍵(jenkins_rsa.pub)を Bitbucket に登録します。Bitbucket の管理画面で、アカウントの管理(右上プルダウン)→ SSHキー(左メニュー下部)→ 「鍵を追加」から公開鍵を追加します。

~/.ssh/config を作成。

SSH 接続クライアントの設定、 Macの ~/.ssh/config に SSH 接続の設定を書いておく 〜 CentOS6 | EasyRamble

bitbucket に ssh 接続確認。

初回は、Are you sure 〜と接続の確認メッセージが出るので、yes にします。

Jenkins に Git plugin をインストール

・Jenkinsの管理 → プラグインの管理 → 利用可能 → 「フィルター」に「Git Plugin」と入力

Git Plugin にチェックをして、「再起動せずにインストール」をクリック。

jenkins を再起動させます。最下部の「jenkins 再起動〜」をチェック。再起動が終了すると、自動でブラウザがリロードされますので再度 Jenkins にログイン。

Jenkins のジョブ(プロジェクト)を作成

実験用に、「Hello World!」ジョブを作成してみます。Jenkinsにログイン後、

新規ジョブ作成 → 「ジョブ名」に「HelloWorld」と入力 → 「フリースタイル・プロジェクトのビルド」にチェック → OK

・「ソースコード管理システム」で Git を選択
・「Repository URL」に Bitbucket リポジトリの URL(git@bitbucket.org:user_name/repo_name.git)を入力
・「リポジトリ・ブラウザ」で bitbucketweb を選択 → 「URL」に Bitbucket リポジトリのURL(https://user_name@bitbucket.org/user_name/repo_name.git)を入力
・「ビルド・トリガ」で「SCMをポーリング」にチェック
・ビルド → ビルド手順の追加 → シェルの実行 → 「シェルスクリプト」に’Hello World’を出力させるシェルスクリプトを入力

echo ‘Hello World!’

以上を設定したら、保存します。

手動で HelloWorld ジョブのビルド実行

・ダッシュボード → 「HelloWorld」ジョブをクリック → 左メニューの「ビルド実行」をクリック

これで、ビルド実行されます。しばらくすると、左メニュー下のビルド履歴が1つ増えるので、確認するにはその追加されたビルド履歴を選択。

・ビルド履歴 → コンソール出力(Console Output) → 「Hello World!」の出力を確認

ビルド履歴 → Console Output を確認すると、設定した Bitbucket リポジトリから clone が行われ、その後 echo ‘Hello World!’ のコマンドが実行されたことを確認できます。

2回目のビルド実行を行いビルド履歴を確認すると、Bitbucket リポジトリに変更が何も push されていないので、「No changes.」という結果が記録されました。

3回目のビルド実行で、リポジトリに変更を加えてテスト。ローカルの開発環境で、CSSをちょっと変更して push。

以上を追加後、commit して push。

これで、リポジトリに変更が加えられたので、今度は Jenkins のビルド実行によりリポジトリに変更があったことが記録されるはず。

再び Jenkins でビルド実行後、ビルド履歴を確認してみます。

期待通り、上記のように記録されていました。

以降は、自動的に Bitbucket リポジトリの変更を検知して、ビルド実行を完全に自動で行う設定です。

ビルド・トリガでスケジュールを設定

前述で設定した「ビルド・トリガ → SCMをポーリング」の箇所で、さらにスケジュールを設定します。以下は5分毎に、Bitbucket リポジトリの変更をチェックする設定です。

H/5 * * * *

crantab によるスケジュールなので、crontab の書式で指定します。ちなみに、既存のジョブの設定を変更するには、ジョブを選択してクリック後、左メニューの設定から。

crontabの書き方 — server-memo.net

Bitbucket リポジトリに push して、5分以内にビルド実行されることを確認します。

Bitbucket でのウェブフック設定

ビルド・トリガのスケジュールの代わりに、ウェブフックを使う方法です。Bitbucket のウェブフックを設定し、リポジトリが変更された時に行う動作を設定します。この設定により、Bitbucket リポジトリに変更があった時に、自動で Jenkins ジョブを実行させることができます。

Bitbucket にログイン後、

・Settings → フック → 「POST」を選択 → ホックを追加 → Jenkins サーバーへの通知用 URL を入力

以下のURLを入力します。

http://JenkinsサーバーのURL(IPアドレス):8080/git/notifyCommit?url=git@bitbucket.org:user_name/repo_name.git

これで、Bitbucket に変更が push された時点で、自動で Jenkins のジョブが実行されます。Jenkins にユーザー認証が付いている場合は、この notifyCommit のエンドポイントURLを使う必要がある。コンソールから以下を実行して、Jenkins のジョブが開始するのをチェックします。

Bitbucket リポジトリに変更を push して、同様に Jenkins ジョブが実行されるのを確認する。

以上で、Jenkins と Bitbucket リポジトリの連携設定は終了です。

スポンサーリンク
Jenkins で CI 環境を構築するには、Jenkins実践入門が参考になります。
スポンサーリンク
 
Twitterを使っていますのでフォローお願いたします!ブログの更新情報もつぶやいてます^^
(英語学習用)

Leave Your Message!