はじめに
Force.com Migration Tool (Force.com 移行ツール) を使っている時、開発用の組織が複数あると
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>
次に、シェルスクリプト。
# !/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
で定義したデフォルト値が使用されます。
おわりに
見ていただけると分かるように、シェルスクリプトでやっていることは
引数を指定して ant コマンドを実行しているだけです。
なので、直接実行してもいいんですが...
-Dproperty=
とか毎回書きたくないなあーという心情からです。
また、そう頻繁に組織を切り替えることが無い場合でも、build.xml
を上記のように記述しておくことで
「自分が使っている組織情報は全部 *.properties
ファイルを作成しておき、 build.xml
だけ編集する」
といったことができるのでいいと思います。
もっと便利な方法で管理されてる方がいたらぜひ教えていただきたいです。