yujiroのプログラミング

勉強内容をアウトプットし、サボらないようにする為のブログ

Salesforce ant インストールから使い方まで

\ Follow me!! /

f:id:yujiro0320:20200128113133j:plain

はじめに

javaをインストールできている。
私の環境ではこのようなバージョンのjavaが入っている

openjdk version "13.0.1" 2019-10-15
OpenJDK Runtime Environment Zulu13.28+11-CA (build 13.0.1+10-MTS)
OpenJDK 64-Bit Server VM Zulu13.28+11-CA (build 13.0.1+10-MTS, mixed mode, sharing)

手順1

developer.salesforce.com

上記サイトを基に説明していく。
まずantをインストールする。
Apache Ant - Binary Distributions

f:id:yujiro0320:20200213122247p:plain
ダウンロードするのはZipファイルでバージョンはどちらでも良い

手順2

ダウンロードしたZIPファイルを解凍する。デスクトップに置いていても良いが、
/usr/local/binに移動させるのが一般的。
図ではfinderのGUIを用いてファイルを移動させた。
CUIで移動できるならそっちの方が早い。

f:id:yujiro0320:20200213123446p:plain


手順3

次に保存したフォルダにパスを通す必要がある。
環境変数にパスを記載して通す。

.bash.profileファイルを作成する必要があり。

.bash.profileファイルはホームディレクトリに存在。

|--home


f:id:yujiro0320:20200213140349p:plain

隠しファイルが見えない状態になっている場合は以下のサイトから表示させるようにコマンドを入力しておく。
【Mac】隠しファイル・隠しフォルダを表示する方法 - Qiita

.bash.profileファイルに以下を記載する

ANT_HOME=/usr/local/bin/apache-ant-1.9.14(ここは保存しているディレクトリを指しています)
export PATH=$ANT_HOME/bin:$PATH

bash_profileを読みこますためにpcを再起動させます。
bash_profile環境変数の読み込みはユーザログイン時見たい。

antツールが正しく読み込まれているかを確認するために、以下コマンドを入力。

ant -version
 

インストールできていればバージョンが表示。

Apache Ant(TM) version 1.9.14 compiled on March 12 2019

手順4

Ant移行ツールをダウンロードする。
Salesforce Developers
ZIPファイルを解凍すると図のようなファイルが入っている。

f:id:yujiro0320:20200213125022p:plain

このうちsampleは資源を環境からデプロイまたは、ダウンロードする際に使用するために、デスクトップにおいておく。
ant-salesforce.jarは保存するディレクトリを変更しないといけない。
ここに保存

|--usr
    |--local
        |--bin
            |--apache-ant-1.9.14
                |--lib
                    |--ant-salesforce.jar ←ここに保存


写真でも見せておく。
apache-ant.1.9.14(ダウンロードするバージョンによってフォルダ名は異なる)以下のlibフォルダ
f:id:yujiro0320:20200213131516p:plain

これで準備は完了である。手順5からは実際の使い方について説明する。

手順5

sampleフォルダを使用してsalesforceの環境からデータを引っ張っていく。
図を参考にしてbilud.propertiesの記述を変更する。どの組織に繋ぐのかを記載。ログインURLに注意。サンドボックスならtestとなる。
f:id:yujiro0320:20200213132756p:plain

手順6

環境から資源をダウンロードするのは、retrieveUnpackagedがデフォルトではなっている。

手順はコード化されておりSAMPLEフォルダ直下にあるbuild.xmlに記載がある。
環境から資源をダウンロードする以外(デプロイ)などもこちらに記載されている。(他にもあるがあまり使わない見たい)
下記コードはSFDC環境から資源をダウンロードするretrieveUnpackagedの記述。詳しく見てみる

  <target name="retrieveUnpackaged">
      <mkdir dir="retrieveUnpackaged"/>
      <!-- Retrieve the contents into another directory -->
      <sf:retrieve username="${sf.username}" password="${sf.password}" sessionId="${sf.sessionId}" serverurl="${sf.serverurl}" maxPoll="${sf.maxPoll}" retrieveTarget="retrieveUnpackaged" unpackaged="unpackaged/package.xml"/>
    </target>

unpackaged="unpackaged/package.xml"と記載ある。

記載の通りunpackagedフォルダの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>ApexTrigger</name>
    </types>
    <version>47.0</version>
</Package>

ここで記述されているのは2点。ApexClassとApexTriggerの全てを対象とする
何の資源をダウンロードしたいのかを明確にするのはこの場所である。

例えばライトニングコンポーメントの資源を全てダウンロードしたいとなれば以下の記述になる。

<?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>ApexTrigger</name>
    </types>
    <types>
		<members>*</members>
		<name>AuraDefinitionBundle</name>
	</types>
    <version>47.0</version>
</Package>


<||


少し話は戻り、build.xmlをもう一度見てみる。

>||
retrieveTarget="retrieveUnpackaged"
<||

と記載がある。ここにデータを吐き出すよって意味の記載。追加したライトニングコンポーメントはこのディレクトリ以下に溜まっていく。

実際に実行してみる。
ターミナルからディレクトリをSAMPLEフォルダまで移動

>||
cd desktop
cd sample
||>

コマンドを以下入力

>||
ant retrieveUnpackaged

これでretrieveUnpackagedフォルダに指定した資源をダウンロードできるようになる。

f:id:yujiro0320:20200213141705p:plain
auraってフォルダが増えてその中に資源が入っている

続いてデプロイについて記述していく。

手順7

資源をデプロイする方法について記述してみる。

build.xmlファイルをみる。
デフォルトの記載でデプロイにかかる記述はdeployCodeに記載がある。

そのコードを詳しく見てみる。

<target name="deployCode">
      <!-- Upload the contents of the "codepkg" directory, running the tests for just 1 class -->
      <sf:deploy username="${sf.username}" password="${sf.password}" sessionId="${sf.sessionId}" serverurl="${sf.serverurl}" maxPoll="${sf.maxPoll}" deployRoot="codepkg" testLevel="RunSpecifiedTests" rollbackOnError="true">
         <runTest>SampleDeployClass</runTest> 
      </sf:deploy>
    </target>
  <runTest>SampleDeployClass</runTest> は実行するテスト(資源)を指定している

テストを実行したい場合はこの部分にテストクラスを追加する。
テストが必要ない場合であってもSampleDeployClassの指定は必要
デプロイの際には必ずテストクラスが必要であり、ないと弾かれてしまうとなる。
本番環境ではテスト実行は必要だが、開発から開発環境またぐ時にわざわざ実行するのも面倒なので

<target name="deployCode">
      testLevel="NotestRun" rollbackOnError="true">
    
      </sf:deploy>
    </target>

にすれば良い。


deployRoot="codepkg" となっているため、codepkgフォルダを覗きにいく
こんなディレクトリ構造になっている。

|--codepkg
    |--classes
    |--triggers
    |--package.xml

先ほどの資源ダウンロード同じく、この上記ディレクトリにデプロイしたい資源を入れて送る。
送る内容はpackage.xmlにて記載する。
package.xmlの中身を見てみる。

<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
    <types>
        <members>SampleDeployClass</members>
        <members>SampleFailingTestClass</members>
        <name>ApexClass</name>
    </types>
    <types>
        <members>SampleAccountTrigger</members>
        <name>ApexTrigger</name>
    </types>
    <version>47.0</version>
</Package>

ここからライトニングコンポーネントを送るように指定してみる。

<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">

    <types>
        <members>test_kawa</members>
        <name>AuraDefinitionBundle</name>
    </types>
    <version>47.0</version>
</Package>

test_kawaというコンポーネントを追加した。

f:id:yujiro0320:20200217140028p:plain

この場合はコンポーネント単位(フォルダ)
コンポーネントの中身のjsファイル、cssファイルのみなども遅れるとおもうがまだ調べられていない。




|--codepkg
    |--aura
    |--classes
    |--triggers
    |--package.xml

auraに送りたい資源をいれる。
送りたい資源のみをフォルダにいれる。今回はclasses,tirggersは送らないので空にする。


あとは、コマンドを実行する。

ant deployCode