任意の組織に対する開発 (ベータ)
スクラッチ組織に対するソースの転送とプルのような簡単さで、Salesforce CLI を使用してソースが追跡されない組織のメタデータの取得とリリースを行うことができたらどうでしょう。何よりもよいのは、追加の変換手順が不要ということです。メタデータを取得した後、それをソース形式に変換する必要がありません。組織に再びリリースする準備ができたとき、メタデータ形式に変換する必要がありません。Salesforce CLI に慣れていない場合、ソース形式とメタデータ形式の違いについては、 「Salesforce DX プロジェクトの構造とソースファイル形式」を参照してください。
force:source:retrieve を使用すると、必要なメタデータをソース形式でローカルファイルシステム (DX プロジェクト) に取得できます。テストする準備ができたら、force:source:deploy を使用してローカルファイルをソースが追跡されない組織に直接リリースできます。
では、これらのコマンドは、スクラッチ組織のコマンド source:push および source:pull とどう違うのでしょうか? 変更が追跡されないため、変更されたものだけでなく、指定されたすべてのメタデータが取得またはリリースされます。取得またはリリースするソースで、ローカルまたは組織にあるソースがそれぞれ上書きされます。
どのメタデータ型がサポートされるのか、どのメタデータ型で package.xml のワイルドカードがサポートされるのかがわからない場合は、『メタデータ API 開発者ガイド』の「メタデータ型」を参照してください。
操作を開始する前に
- Salesforce DX プロジェクトを作成します。
- ソースが追跡されない組織を認証します。Sandbox に接続している場合は、組織を認証する前に、sfdx-project.json ファイルを編集して、sfdcLoginUrl を https://test.salesforce.com に設定します。必ず、ソースが追跡されない組織の別名を作成してください。
コマンドラインでエンコードが必要なメタデータ名
--metadata オプションを使用してメタデータを取得またはリリースするとき、適切に動作するにはメタデータ名のコロンとカンマのエンコードが必要です。
不適切: sfdx force:source:retrieve -m "Profile:Custom: Marketing Profile"
適切: sfdx force:source:retrieve -m "Profile:Custom%3A Marketing Profile"
不適切: sfdx force:source:deploy -m "Profile:Standard User,Layout:Page,Console"
適切: sfdx force:source:deploy -m "Profile:Standard User,Layout:Page%2CConsole"
ソースが追跡されない組織からのソースの取得
force:source:retrieve コマンドを使用して、Sandbox など、ソース追跡のない組織からソースを取得します。すでに VCS にソースコードとメタデータがある場合、このステップは省略できる可能性があります。新たに開始した場合、使用する機能、プロジェクト、またはカスタマイズに関連付けられたメタデータを取得します��
- 取得するコンポーネントをリストした package.xml を指定する。
- メタデータコンポーネント名のカンマ区切りリストを指定する。
- 取得するソースファイルパスのカンマ区切りリストを指定する。たとえば、ソースがローカルに存在する場合、最初の取得が完了した後にソースファイルオプションのパスを使用できます。
指定するカンマ区切りリストにスペースが含まれる場合、カンマ区切りリスト全体を 1 組の二重引用符で囲みます。
| 取得対象 | コマンド例 |
|---|---|
| マニフェストにリストされたすべてのメタデータコンポーネント | sfdx force:source:retrieve -x path/to/package.xml |
| ディレクトリ内のソースファイル | sfdx force:source:retrieve -p path/to/source |
| 特定の Apex クラスとディレクトリにソースがあるオブジェクト | sfdx force:source:retrieve -p path/to/apex/classes/MyClass.cls,path/to/source/objects |
| スペースが含まれるカンマ区切りリスト内のソースファイル | sfdx force:source:retrieve -p "path/to/objects/MyCustomObject/fields/MyField.field-meta.xml, path/to/apex/classes" |
| すべての Apex クラス | sfdx force:source:retrieve -m ApexClass |
| 特定の Apex クラス | sfdx force:source:retrieve -m ApexClass:MyApexClass |
| コロンが含まれるプロファイル名 (Custom: Marketing Profile) | sfdx force:source:retrieve -m "Profile:Custom%3A Marketing Profile" |
ソースが追跡されない組織へのソースのリリース
force:source:deploy コマンドを使用して、Sandbox など、ソース追跡のない組織にソースをリリースします。
ソース形式でメタデータをリリースするには、次の方法を使用します。
- リリースするコンポーネントをリストした package.xml を指定する
- メタデータコンポーネント名のカンマ区切りリストを指定する
- リリースするソースファイルパスのカンマ区切りリストを指定する
指定するカンマ区切りリストにスペースが含まれる場合、カンマ区切りリスト全体を 1 組の二重引用符で囲みます。
| リリース対象 | コマンド例 |
|---|---|
| マニフェストにリストされたすべてのコンポーネント | sfdx force:source:deploy -x path/to/package.xml |
| ディレクトリ内のソースファイル | sfdx force:source:deploy -p path/to/source |
| 特定の Apex クラスとディレクトリにソースがあるオブジェクト | sfdx force:source:deploy -p path/to/apex/classes/MyClass.cls,path/to/source/objects |
| スペースが含まれるカンマ区切りリスト内のソースファイル | sfdx force:source:deploy -p "path/to/objects/MyCustomObject/fields/MyField.field-meta.xml, path/to/apex/classes" |
| すべての Apex クラス | sfdx force:source:deploy -m ApexClass |
| 特定の Apex クラス | sfdx force:source:deploy -m ApexClass:MyApexClass |
| すべてのカスタムオブジェクトと Apex クラス | sfdx force:source:deploy -m CustomObject,ApexClass |
| すべての Apex クラスと 2 つの特定のプロファイル (一方は名前にスペースが含まれ、もう一方にはコロンが含まれる) | sfdx force:source:deploy -m "ApexClass, Profile:Content Experience Profile, Profile%3AMarketing Profile" |
追跡されないソースの削除
force:source:delete コマンドを使用して、Sandbox など、ソース追跡のない組織からコンポーネントを削除します。
ソースがローカルの Salesforce DX プロジェクトに存在する場合、ソース形式のメタデータを削除するには、ソースへのパスを指定するか、個々のメタデータコンポーネントをリストします。指定するカンマ区切りリストにスペースが含まれる場合、カンマ区切りリスト全体を 1 組の二重引用符で囲みます。
| 削除対象 | コマンド例 |
|---|---|
| ディレクトリ内のソースファイル | sfdx force:source:delete -p path/to/source |
| FlexiPage など、特定のコンポーネント | sfdx force:source:delete -m FlexiPage:Broker_Record_Page |
生成されたメタデータを保持する場合
通常、一部の CLI コマンドを実行すると、すべてのメタデータを含む一時ディレクトリが作成され、コマンドの正常な完了時に削除されます。ただし、これらのファイルを保持しておくと、いくつかの理由で便利です。コマンド実行時に発生した問題をデバッグできます。生成される package.xml を後続のコマンド実行時に使用できます。または、必要なすべてのメタデータが含まれるマニフェストを作成するための開始点として使用できます。
次のコマンドの実行時に指定したディレクトリパスにすべてのメタデータを保持するには、SFDX_MDAPI_TEMP_DIR 環境変数を設定します。
- force:source:deploy
- force:source:retrieve
- force:source:delete
- force:source:push
- force:source:pull
- force:source:convert
- force:org:create (スクラッチ組織定義に、組織設定ではなくスクラッチ組織設定が含まれる場合)
例:
1SFDX_MDAPI_TEMP_DIR=/users/myName/myDXProject/metadata