【Salesforce】Apache Antを使用したリリース方法

クラウドの画像

Apache Antを使用したSalesforceのリリース方法についてのメモです。 基本的な構成や気をつけなければならない部分について残しておきます。

リリースに必要な基本構成

◆Apache Antの実行に必要なファイル

ファイル名 ファイル識別子 メモ
プロパティファイル *.properties Salesforce環境の接続情報を記載するファイル
初期状態だとbuild.propertiesという名前のファイルが用意されている
ビルドファイル *.xml Antの実行に関する定義ファイル
初期状態だとbuild.xmlという名前のファイルが用意されている

Apache Antの実行ができる状態でこの2つのファイルがあればsalesforce環境への接続は可能です。 プロパティファイルには接続情報を設定しますが、環境によって異なると思いますので、ここので解説は省きます。 ビルドファイルにはAntで実行されるコマンドを定義します

▽Ant移行ツールの設定については過去記事を見てください。
【Salesforce】Ant移行ツールを使用する準備 - RECLOG

◆リリースに必要なファイル

ファイル名 ファイル識別子 メモ
ソースファイル *.*
(いろいろ)
classやpage等、実際のSalesforce内で管理されているソース
メタデータファイル .-meta.xml class/page/trigger/componentの場合はソースファイルに加えてメタデータファイルが必要
マニフェストファイル package.xml salesforce環境から"何を"を操作するか記載する

これを任意のフォルダに配置します。 Force.com移行ツールに用意されているretrieveを実行するとフォルダ構成が確認できるので、実際に環境からファイルを取得してみてください。

リリース方法

リリースするには以下のようにdeployコマンドをビルドファイルに記述します。

    <target name="deploy">
      <sf:deploy username="${sf.username}" password="${sf.password}" serverurl="${sf.serverurl}" maxPoll="${sf.maxPoll}" deployRoot="deploy"/>
    </target>

プロパティファイル、ならびにビルドファイルが存在するディレクトリと同階層にdeployRootで指定したディレクトリを作成します。 そして、その作成したファイルにリリースに必要なファイルを配置し、コマンドプロンプト経由でdeployコマンドを実行することでプログラムがリリースされます。

注意するべき点

リリースをする際にいくつか注意しなければならないことがあります。主にマニフェストファイルに関する内容です。

レポートはレポート名をマニフェストファイルに記載しなければいけない

通常、クラス(ApexClass)やVFページ(ApexPage)等はマニフェストファイルに指定する場合、*(アスタリスク)での指定が可能です。アスタリスクで指定することで配置されているファイルを全て検知してくれるため、作業者は置くファイルだけ気をつければよいのです。

(略)
    <types>
        <members>*</members>
        <name>ApexClass</name>
    </types>
    <types>
        <members>*</members>
        <name>ApexPage</name>
    </types>
(略)

ただし、レポート(Report)でこの指定を行うとリリース時にエラーになりますので 注意してください。 また、レポートはフォルダを作成している場合、フォルダ構成を保ってリリースする必要があります。

例えば、ご飯(Gohan)フォルダの下にカレー(Curry)レポートがあったとして、カレーレポートのリリースを行う場合は以下のように書かなければなりません。

    <types>
        <members>Gohan</members>
        <members>Gohan/Curry</members>
        <name>Report</name>
    </types>

レポートフォルダにはメタデータファイルが存在します。 リリース時はそれもリリース対象に含めなければならないことに注意してください。

標準オブジェクトはマニフェストファイルに記載しなければいけない

Salesforceには独自に作成するカスタムオブジェクトと、標準で用意されている標準オブジェクトが存在します。 ユーザー(User)などはその典型ですが、それらのオブジェクトのリリースを行う場合、レポートと同様にマニフェストファイルに記載しなければいけません。

    <types>
        <members>User</members>
        <members>*</members>
        <name>CustomObject</name>
    </types>

ちなみに、カスタムオブジェクトはアスタリスクでの全体指定が有効です。上のように書けば標準オブジェクトのユーザーとカスタムオブジェクト全体が対象となります。

プロファイルのリリースは慎重に

AntではSalesforceのプロファイル(Profile)をリリースすることもできます。 カスタムオブジェクトの項目レベルセキュリティなどの情報はプロファイルに含まれているため、一括でそれらの変更が必要になった場合、プロファイルのリリースは特に有効です。

ですが、プロファイルにはログイン可能な時間帯の設定IPフィルタの設定も含まれています。

設定値が書き換わらなければよいのですが、設定が書き換わることによってSalesforceの利用に悪影響が出ることもありますので注意してください。

書き換えたくない項目については、記述を削除することで適用しないようにすることもできます。 ログイン可能な時間帯の設定やIPフィルタの設定も記述せずに適用すれば、現在設定されている設定情報は保持されます。

「設定が書き換わるのは困る…でも、手動で一つ一つ作業は難しい…」そういう時は必要ない記述をプロファイルのXMLソースから削除しましょう。

ちなみに、プロファイルは一緒にretrieveするソースによって形が変わります。 いくつかのオブジェクトに関係するプロファイル情報のみ取得したい場合、retrieve時にオブジェクトを個別指定すればプロファイルも比較的シンプルな形で取得できます。

※ただし、ログインできる時間帯の設定やIPフィルタはくっついて来るので確認したほうが良いです。

まとめ

以上、Salesforce環境にApache Antでリリースを行う場合の注意点でした。