Salseforce CLI (sf Commands) Deploy tool
- Ant 移行ツールが Spring '24 で廃止になったためSalesforce CLIを使用したデプロイツールをBATファイルで作成しました。
- CLIが苦手・コマンドを打つのが面倒 そんな方に是非!
ソースコード(GitHub)
必要条件
実行環境
- Windows
下記を必ずインストールしておいてください。
-
Salesforce CLI ※sf (v2)
- インストールやsfdx (v7) から sf (v2) への移行方法はSalesforceのHelpを確認ください。
必須ではないため任意でインストールをお願いします。
-
WinMerge
- メタデータの前後比較の際にWinMergeを使用します。
セットアップ
1. 接続情報の入力
-
..\toolkit\config\setting.ini
を開きます。- 接続情報を入力します。
パラメータ | このステップでの入力対象箇所 | 値 |
---|---|---|
SfMyDomain | ✅ | 組織の私のドメインを設定します。 ※「私のドメイン」確認方法 Salesforce組織へログイン > 設定>クイック検索で「私のドメイン」入力・「私のドメイン」をクリック > [私のドメイン] の詳細セクション内の「現在の [私のドメイン] の URL」右横に記載のURL。 (コピー時には「https://」が付いていないので忘れずに!) |
SfUserName | ✅ | デプロイに使用するユーザーのSalesforce ユーザー名 |
SfdxAuthUrl | ☐ | Salesforce組織への認証情報を含む URLを記載のテキストファイルに設定します。 ※後ほどの手順で取得方法を案内します。 |
SoapApiVersion | ✅ | HTTPS の要求や応答の処理に使用されるメタデータ API のコアバージョンを指します。 ※初期設定として 55.0 に設定しています。必要に応じて変更してください。 |
TestLevel | ✅ | 指定したテストレベルによってテストの範囲が変化します。 RunSpecifiedTests と RunAllTestsInOrgの指定が可能です。 ・RunSpecifiedTests: 指定したテストのみを実行します。 ・RunAllTestsInOrg:管理パッケージのテストを含む、組織内のすべてのテストが実行されます。 |
初期状態では、Org01のセクションを使用可能状態にしています。
Org02、Org03も用意していますので必要に応じてコメントアウト「;」を切り替えて使用ください。
2. 組織を認証 (Authorize an Org) およびSfdx Auth Urlの取得
-
..\toolkit\Init_loginWeb_sfdxAuthUrl_cfm.bat
を実行します。
Sfdx Auth Urlは認証情報を含む URLのため取り扱いには注意を!!
3. Sfdx Auth Urlの設定
※ここからは、1. 接続情報の入力でOrg01を使用している前提で記載しています。
-
..\toolkit\config\sfdxAuthUrl_org01.txt
を開きます。-
2. 組織を認証 (Authorize an Org) およびSfdxAuthUrlの取得で取得した
Sfdx Auth Url
を張り付けて保存します。
-
2. 組織を認証 (Authorize an Org) およびSfdxAuthUrlの取得で取得した
使用方法および機能
事故防止のためBat実行毎に組織への接続(ログイン)・切断(ログアウト)を行っています。
メタデータ取得
- 取得したいメタデータを
..\toolkit\retrievemanifest\package.xml
に記載します。- 必要に応じて内容を編集してください。
-
01.retrieve_before.bat
を実行します。- 処理内容
- 組織への接続(ログイン)
- 組織のメタデータの取得
- 組織から切断(ログアウト)
- 処理結果
- Batファイルを実行した日時のフォルダ名(YYYY-MM-DD_HH-MM-SS_"number"形式)で
..\toolkit\01.retrieved_before
に格納します。
- Batファイルを実行した日時のフォルダ名(YYYY-MM-DD_HH-MM-SS_"number"形式)で
- 処理内容
-
02.retrieve_after.bat
を実行します。- 処理内容
- 組織への接続(ログイン)
- 組織のメタデータの取得
- 組織から切断(ログアウト)
- 処理結果
- Batファイルを実行した日時のフォルダ名(YYYY-MM-DD_HH-MM-SS_"number"形式)で
..\toolkit\02.retrieved_after
に格納します。
- Batファイルを実行した日時のフォルダ名(YYYY-MM-DD_HH-MM-SS_"number"形式)で
- 処理内容
フォルダ名の"number"部分は固定のテキストですので、各プロジェクトのルールに沿って課題番号などに書き換えるなどして使用してください。
現在の認証済の組織一覧表示
メタデータのデプロイ
-
..\toolkit\deploycodepkg
にデプロイ対象の資材を格納してください。
初期状態では、サンプル資材を格納しています。
使用する際にはdeploycodepkg
内の資材は削除してください。
サンプル:Apexクラス2個 トリガ1個の場合
─deploycodepkg
│ package.xml
│
├─classes
│ SampleDeployClass.cls
│ SampleDeployClass.cls-meta.xml
│ SampleFailingTestClass.cls
│ SampleFailingTestClass.cls-meta.xml
│
└─triggers
SampleAccountTrigger.trigger
SampleAccountTrigger.trigger-meta.xml
-
..\toolkit\testclasslist.txt
にデプロイ時に実行するApexクラス名を半角スペース区切りで記載してください。
サンプル:Apexテストクラス3個実行する場合SampleFailingTestClass01 SampleFailingTestClass02 SampleFailingTestClass03
-
deploy_start.bat
を実行します。- 処理内容
- 組織への接続(ログイン)
- デプロイ前のメタデータ取得
- デプロイ と Apexテストの実行
- デプロイ後のメタデータ取得
- 組織から切断(ログアウト)
- 処理結果
- デプロイ前のメタデータ取得処理が実行された日時のフォルダ名(YYYY-MM-DD_HH-MM-SS_"number"形式)で
..\toolkit\01.retrieved_before
に格納します。 - デプロイ後のメタデータ取得処理が実行された実行した日時のフォルダ名(YYYY-MM-DD_HH-MM-SS_"number"形式)で
..\toolkit\02.retrieved_after
に格納します。 - 処理の記録をBatファイルを実行した日時のフォルダ名("deploy"_MMDDHHMMSS.log形式)でlogファイルを
..\toolkit\log\deploy
に格納します。
- デプロイ前のメタデータ取得処理が実行された日時のフォルダ名(YYYY-MM-DD_HH-MM-SS_"number"形式)で
- 処理内容
Sfdx Auth Urlの取得(セットアップ)
組織への接続(ログイン)
-
login_org_sfdx_url.bat
を実行します。
※Sfdx Auth Urlが設定(セットアップが完了)されている前提です。- 処理内容
- 組織への接続(ログイン)
- 処理内容
組織から切断(ログアウト)
-
logout_org.bat
を実行します。- 処理内容
- 組織から切断(ログアウト)
- 処理内容
メタデータの前後比較
WinMergeがインストールされている場合に実行可能です。
-
openWinMerge.bat
を実行します。
ディレクトリ構成
─toolkit
│ 01.retrieve_before.bat
│ 02.retrieve_after.bat
│ authorization_info_list.bat
│ deploy_start.bat
│ Init_loginWeb_sfdxAuthUrl_cfm.bat
│ login_org_sfdx_url.bat
│ logout_org.bat
│ openWinMerge.bat
│ testclasslist.txt
│
├─01.retrieved_before
│ forpush.txt ←空ファイル(Githubフォルダ作成のため)
│
├─02.retrieved_after
│ forpush.txt ←空ファイル(Githubフォルダ作成のため)
│
├─config
│ setting.ini
│ sfdxAuthUrl_org01.txt
│ sfdxAuthUrl_org02.txt
│ sfdxAuthUrl_org03.txt
│
├─deploycodepkg
│ │ package.xml ←サンプルコード
│ │
│ ├─classes ←サンプルコード
│ │ SampleDeployClass.cls
│ │ SampleDeployClass.cls-meta.xml
│ │ SampleFailingTestClass.cls
│ │ SampleFailingTestClass.cls-meta.xml
│ │
│ └─triggers ←サンプルコード
│ SampleAccountTrigger.trigger
│ SampleAccountTrigger.trigger-meta.xml
│
├─log
│ └─deploy
│ forpush.txt ←空ファイル(Githubフォルダ作成のため)
│
└─retrievemanifest
package.xml