[Salesforce.com] Force.com 移行ツールを使った展開について

最近の仕事ではsalesforce.com上での開発をずっとやっている。色々と痛い目を見てノウハウもたまってきたのもあるし、ネット上であまりに情報がないってのもあり、そろそろココにも残しておこうかなと。

salesforce.com(以下、SFDC)は、言わずと知れたSaaSの代名詞のような会社です。これから更にSaaSのようなクラウド化が進み標準となってしまうのか?そして、それでいいのか?は、まだよくわからんです。

で、一発目は。ちょっと頼まれてまとめたので、ついでということで。開発したモジュールをSFDCに展開する方法についてです。
尚、本番環境(SandboxやDeveloper環境ではない)に展開する場合は、テストコードの用意をお忘れなく。


[Force.com 移行ツールの使い方]
SFDCの運用環境にApexコード等のモジュールを展開するためのツールの1つである「Force.com 移行ツール」とよばれるものの使い方についてまとめます。

[必要なツール]

  • Java SDK 6.1以降
  • Apache Ant
    ・Antの設定については下記サイトを参考にしてみてください。
     Antインストール – Apache Antの使い方
  • Force.com 移行ツール
    1. [設定] – [開発] – [Tools] の順にクリックし、[Force.com 移行ツール] をクリックでダウンロード。
    2. ダウンロードした「salesforce_ant.zip」を解凍し、「ant-salesforce.jar」をantのlibフォルダにコピーします。

[フォルダ構成]
ここではCドライブの直下にSFDCにSIするためのモジュールを配置すると仮定し説明します。下記のようにCドライブの直下に「SFDC_SI」という名前のフォルダを作成し、「[]」の名称のフォルダおよび「package.xml」、「build.xml」、「build.properties」というファイルを配置します。

C:SFDC_SI
├[mod]
│  ├[classes]
│  ├[pages]
│  ├[scontrols]
│  ├[staticresources]
│  ├[triggers]
│  └ package.xml
├ build.properties
└ build.xml

また、そろぞれのファイルの設定を以下にまとめます。
基本的に「build.properties」の下記の値をそれぞれの環境にあわせて変更してください。

  • sf.username:SFDCに接続するユーザを設定してください。
  • sf.password:SFDCに接続するユーザのパスワードを設定してください。必要に応じて、セキュリティトークンも設定してください。
  • sf.serverurl:本番および開発環境は「https://www.salesforce.com」、Sandboxは「https://test.salesforce.com」です。
  • proxy.host:インターネットに接続する際にProxyサーバ経由で接続している場合は、Proxyサーバのアドレス(ホスト名)を設定してください。
  • proxy.port:通常は「8080」で問題ないでしょう。
  • proxy.user:Proxyサーバで認証が必要の場合は、認証ユーザを設定してください。
  • proxy.pass:Proxyサーバで認証が必要の場合は、認証パスワードを設定してください。

[build.properties]の設定

# build.properties
#

# Specify the login credentials for the desired Salesforce organization
sf.username = <SFDCユーザID>
sf.password = <パスワード><セキュリティトークン>

# Use ‘https://www.salesforce.com’ for production or developer edition (the default if not specified).
# Use ‘https://test.salesforce.com’ for sandbox.
sf.serverurl = https://www.salesforce.com

# If your network requires an HTTP proxy, see http://ant.apache.org/manual/proxy.html for configuration.

proxy.host = <PROXYのIPアドレス>
proxy.port = 8080
proxy.user = <ユーザID>
proxy.pass = <パスワード>

#

[build.xml]の設定
削除する場合は、削除するモジュールを全て設定するようにしてください。

<project name="Sample usage of Salesforce Ant tasks" default="deploy" basedir="." xmlns:sf="antlib:com.salesforce">
<property file="build.properties"/>
<property environment="env"/>

<!-- proxy:プロキシの接続定義 -->
<target name="proxy">
<property name="proxy.port" value=""/>
<property name="proxy.user" value=""/>
<property name="proxy.pass" value=""/>
<setproxy proxyhost="${proxy.host}" proxyport="${proxy.port}"
proxyuser="${proxy.user}" proxypassword="${proxy.pass}"/>
</target>

<!-- deployAndAllTest:サーバへの保存&Allテスト実行 -->
<target name="deployAndAllTest" depends="proxy">
<sf:deploy
username="${sf.username}"
password="${sf.password}"
serverurl="${sf.serverurl}"
runAllTests="true"
deployroot="mod"
maxPoll ="2000">
</sf:deploy>
</target>

<!-- deploy:サーバへの保存のみ -->
<target name="deploy" depends="proxy">
<sf:deploy
username="${sf.username}"
password="${sf.password}"
serverurl="${sf.serverurl}"
deployroot="mod"
maxPoll ="2000">
</sf:deploy>
</target>

<!-- deployCodeCheckOnly:ソースチェックのみ。サーバへは保存しない -->
<target name="deployCodeCheckOnly" depends="proxy">
<sf:deploy
username="${sf.username}"
password="${sf.password}"
serverurl="${sf.serverurl}"
deployroot="mod"
checkOnly="true"
maxPoll ="2000">
</sf:deploy>
</target>

<!-- delete:サーバモジュールの削除。削除するモジュール名を指定してください -->
<target name="delete" depends="proxy">
<sf:compileAndTest
username="${sf.username}"
password="${sf.password}"
server="${sf.serverurl}">
<deleteClass>XXXXXXX</deleteClass>
</sf:compileAndTest>
</target>

</project>

[package.xml]の設定

<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
<types>
<members>*</members>
<name>ApexClass</name>
</types>
<types>
<members>*</members>
<name>ApexComponent</name>
</types>
<types>
<members>*</members>
<name>ApexPage</name>
</types>
<types>
<members>*</members>
<name>ApexTrigger</name>
</types>
<types>
<members>*</members>
<name>Scontrol</name>
</types>
<types>
<members>*</members>
<name>StaticResource</name>
</types>
<version>13.0</version>
</Package>

[実行方法]
コマンドプロンプトを起動し、「SFDC_SI」ディレクトリに移動します。
そして、SFDCに単純にSIする場合は「ant」もしくは「ant deploy」と入力し、[Enter]でOKです。

例えば削除したい場合は、「build.xml」で設定している「delete」を実行すればよいので、「ant delete」と入力し、[Enter]でOKです。

[Salesforce.com] Force.com 移行ツールを使った展開について

コメントを残す