今更感がありますが、JenkinsでSalesforceのCIにチャレンジ!

 

今回は手動デプロイ実行と、カバレッジ/テスト結果表示まで。

 

1. JenkinsやWebサーバ、antのインストール

まずはここから。

 

2. nginxの設定変更

/etc/nginx/sites-enabled/default を以下のように編集して

Basic認証とJenkinsへのリバースプロキシを設定します。

※ここでは非SSLの設定ですが、Basic認証使っているので絶対にSSLにした方が良いです。

→参考URL:JenkinsサーバのSSL対応とBasic認証

 

htpasswdの設定も忘れずに

 

3. 必要なライブラリを取ってきて、$ANT_HOME/libに入れる。

以下のライブラリが必要。

ant-salesforce.jar

ant-salesforce-ci.jar

scala-library.jar

面倒なときはここから根こそぎ取ってきてください。

 

4. デプロイ対象のビルドファイルを入れる。

ここらへんは相対パスの関係で色んな配置パターンが考えられますが、以下の方針で配置しました。

・jenkinsユーザのホームディレクトリを作成して、その配下にビルドファイルを入れる。

・成果物(カバレッジとテスト結果のxmlファイル)はworkspaceに置く。

 

ということで配置としてはこんな感じ。(ForceComSampleのファイルを置いています。)

tree-sforce-ci

 

5. build.propertiesとbuild.xmlの設定

 

testResultFileとcoverageResultFileはworkspace直下に設定します。

カバレッジやテストレポートはworkspaceからの相対パスで指定するっぽいのでこの場所に置いてます。

 

あと、sfc:deployForCIはant-salesforceのdeployを拡張したものなので

checkOnly=”true”でデプロイをせずテストのみ行うことも可能です。

 

6. jenkinsの設定

http://{your domain}/でjenkinsにアクセスして

Jenkinsの管理>プラグインの管理からCobertura Pluginをインストール後、新規ジョブを作成します。

jenkins-new-project

 

ビルドの設定

jenkins-project-build

 

ビルド後の処理

jenkins-project-afterbuild

 

7. ビルドを実行してカバレッジとテスト実行結果を取得!

実行結果はこんな感じ。

コンソール出力

jenkins-console

 

カバレッジ(何かグラフの凡例が…)

jenkins-coverage-summary

 

カバレッジ詳細

jenkins-coverage-detail

 

テスト実行結果

jenkins-test-result

 

 

パスの設定がおかしいと、

[Cobertura] No coverage results were found using the pattern****

と言われるので注意してください。

 

※coverage.xmlとtest-result.xmlがファイルシステム上のどこにも出力されていなければ

3のライブラリ設定がおかしい可能性があります。

出力されていて、上記エラーが出た場合は完全にパス設定の問題です。

 

ということで、Salesforceのコードを手動でデプロイして実行結果を取得できることができました!

次回は、bitbucketと連携したいと思います。