前回はJenkinsで手動デプロイをするところまでやったので、今回はbitbucketと連携させてみます。

 

仕組みとしては

bitbucketにコミット

→コミットをトリガとしてhook(HTTP POST)が起動し、jenkinsに通知する。

→jenkinsは通知されたタイミングでbitbucketからデータを取得して、取得したデータでantを走らせる。

って感じです。

 

1. Jenkinsにgitのプラグインをインストール

Jenkinsの管理>プラグインの管理 からGIT pluginをインストール。

 

2. jenkinsユーザのssh設定

まずjenkinsユーザでsshキーを作成します。

 

生成された公開鍵(${JENKINS_HOME}/.ssh/id_rsa.pub)をbitbucketに設定します。

 

初回はknown_hostsにbitbucketが登録されていないので

とかで登録しておきます。

 

3. 新しいJobを作成

ソースコード管理にbitbucketのリポジトリを設定

sf-bitbucket-git

 

ビルド・トリガはSCMポーリング。スケジュールは空白で。

sf-bitbucket-build-trigger

 

bitbucketにID/Passwordを保持したくなかったので

適当なディレクトリにbuild.xmlとbuild.propertiesを入れる。

sf-bitbucket-build

 

あとは同じ

sf-bitbucket-afterbuild

 

4. antの設定ファイルを編集

今回はbuild.xmlやbuild.propertiesが別の場所にあるので相対パスは使ってません。

 

 

5. bitbucketのリポジトリにhookを設定

jenkinsっていうフックがありますが、うまくいかなかったのでPOSTにしました。

bitbucket-hook

 

URLはhttp://{user}:{password}@{jenkins-server}/git/notifyCommit?url=git@bitbucket.org:{bitbucket-user}/{bitbucket-repository}.git って感じで。

(Basic認証使ってなければhttp://{jenkins-server}/git/… って感じになります。)

 

6. bitbucketにコミットする。

前回同様こんな感じのフォルダ構成でcommitします。(ForceComSampleを利用させていただきました!)

tree-bitbucket-src

 

これでbitbucketにcommitしたら自動的にJenkinsのビルドが走ってくれるように設定が完了しました!

githubとか別のgitサービスの場合も同じような設定方法になります。

 

うまくいかない場合は上記URLを直接叩いてみて、1-4の設定が合っているかどうかを確認すると良いかも。

 

実際の開発の時はmeta.xmlとかpackage.xml作るの面倒なので

Eclipseのforce.com IDEやsalesforce migration toolとかで取ってきたものを

編集してcommitする流れになると思います。

 

今回の参考URL:

Bitbucketのprivate repositoryとJenkinsの連携について

Ubuntu – BitbucketのプライベートリポジトリをJenkinsからビルド

GithubからJenkinsへのServer Hook