LoginSignup
5
6

More than 5 years have passed since last update.

Force.com Migration Toolでbuild.propertiesを複数利用するためのスクリプト

Last updated at Posted at 2015-03-21

はじめに

Force.com Migration Tool (Force.com 移行ツール) を使っている時、開発用の組織が複数あると
build.properties を複数用意してデプロイ先を簡単に切り替えたい
というニーズが個人的にあります。

具体的には、

  1. デプロイ時、デプロイ先の組織 を引数で変更可能にしたい
    • build.properties を毎回書き換えるのは嫌なので複数用意しておきたい
  2. デプロイ時、デプロイ対象のディレクトリ も引数で変更可能にしたい
    • git とかでソースを管理する際、作ったものの内容ごとにディレクトリを分けたりしたいので

これを簡単にできるようにデフォルトの build.xml を修正&シェルスクリプトを作ってみました。

GitHub

シェルスクリプトも含めて、Force.com Migration Tool を簡単に使い始めるためのファイル群を GitHub で公開してます。

コード

まず、build.xml
こんな感じでプロパティファイル名とデプロイ対象ディレクトリ名を ant の property として定義しておきます。

build.xml
<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 で定義したデフォルト値が使用されます。

おわりに

見ていただけると分かるように、シェルスクリプトでやっていることは
引数を指定して ant コマンドを実行しているだけです。
なので、直接実行してもいいんですが...
-Dproperty= とか毎回書きたくないなあーという心情からです。

また、そう頻繁に組織を切り替えることが無い場合でも、build.xml を上記のように記述しておくことで
「自分が使っている組織情報は全部 *.properties ファイルを作成しておき、 build.xml だけ編集する」
といったことができるのでいいと思います。

もっと便利な方法で管理されてる方がいたらぜひ教えていただきたいです。

5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6