Force.com Migration Tool を使っている時、開発用の組織が複数あると
build.properties
を複数用意してデプロイ先を簡単に切り替えたい
というニーズが個人的にあります。
具体的には、
- デプロイ時、デプロイ先の組織 を引数で変更可能にしたい
build.properties
を毎回書き換えるのは嫌なので複数用意しておきたい
- デプロイ時、デプロイ対象のディレクトリ も引数で変更可能にしたい
- git とかでソースを管理する際、作ったものの内容ごとにディレクトリを分けたりしたいので
これを簡単にできるように build.xml
を修正&簡単なシェルスクリプトを作ってみました。
GitHub
シェルスクリプトも含めて、Force.com Migration Tool を簡単に使い始めるためのファイル群を GitHub で公開してます。
build.xml
こんな感じで、プロパティファイル名とデプロイ対象ディレクトリ名を ant の property として用意しておきます。
<project name="Salesforce Ant tasks" default="deployCode" basedir="." xmlns:sf="antlib:com.salesforce"> <!-- デフォルトで使用する - .properties ファイル - deploy 対象ディレクトリ --> <property name="property" value="build.properties"/> <property name="deployTarget" value="codepkg"/> <property file="${property}"/> <property environment="env"/> <!-- コードを組織にデプロイ --> <target name="deployCode"> <sf:deploy username="${sf.username}" password="${sf.password}" serverurl="${sf.serverurl}" maxPoll="${sf.maxPoll}" deployRoot="${deployTarget}"> </sf:deploy> </target>
deploy.sh
#!/bin/bash while getopts p:t: OPT do case $OPT in p) PROPERTY=$OPTARG ;; t) TARGET=$OPTARG ;; esac done if [ -n "$PROPERTY" ]; then OPT_PROPERTY="-Dproperty=$PROPERTY" fi if [ -n "$TARGET" ]; then OPT_TARGET="-DdeployTarget=$TARGET" fi ant deployCode $OPT_PROPERTY $OPT_TARGET
使い方
こんな感じで、プロパティファイルを指定する時は -p
オプションを、デプロイ対象のディレクトリを指定する時は -t
オプションをつけて deploy.sh
を実行します。
$ ls build.properties my_org1.properties my_org2.properties pkg1 pkg2
# my_org1 で定義した組織に pkg1 の内容をデプロイ
$ ./deploy.sh -p my_org1.properties -t pkg1
それぞれのオプションは省略が可能で、省略した場合は build.xml
で定義したデフォルト値が使用されます。