任意の組織に対する開発
スクラッチ組織に対するソースの転送およびプルと同じ簡単さで、Salesforce CLI を使用してソースが追跡されない組織との間でメタデータの取得とリリースを行うことができます。何よりもよいのは、追加の変換手順が不要ということです。メタデータを取得した後、それをソース形式に変換する必要がありません。組織に再びリリースする準備ができたとき、メタデータ形式に変換する必要がありません。Salesforce CLI に慣れていない場合、ソース形式とメタデータ形式の違いについては、「Salesforce DX プロジェクトの構造とソースファイル形式」を参照してください。
force:source:retrieve を使用すると、必要なメタデータをソース形式でローカルファイルシステム (DX プロジェクト) に取得できます。テストまたは本番組織への変更の準備ができたら、force:source:deploy を使用してローカルファイルをソースが追跡されない組織に直接リリースできます。
では、これらのコマンドは、スクラッチ組織のコマンド source:push および source:pull とどう違うのでしょうか? 変更が追跡されないため、変更されたものだけでなく、指定されたすべてのメタデータが取得またはリリースされます。取得またはリリースするソースで、ローカルまたは組織にあるソースがそれぞれ上書きされます。
どのメタデータ型がサポートされるのか、どのメタデータ型で package.xml のワイルドカードがサポートされるのかがわからない場合は、『メタデータ API 開発者ガイド』の「メタデータ型」を参照してください。
操作を開始する前に
- マニフェスト (package.xml) を持つ Salesforce DX プロジェクトを作成します。force:project:create -n MyProject --manifest を実行します。
- ソースが追跡されない組織を認証します。Sandbox に接続している場合は、組織を認証する前に、sfdx-project.json ファイルを編集して、sfdcLoginUrl を https://test.salesforce.com に設定します。必ず、ソースが追跡されない組織の別名を作成してください。
コマンドラインでエンコードが必要なメタデータ名
--metadata オプションを使用してメタデータを取得またはリリースするとき、適切に動作するにはメタデータ名のコロンのエンコードが必要です。
不適切: 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" |
| カンマを含むレイアウト名 (「Layout: Page, Console」) | sfdx force:source:retrieve -m "Layout:Page%2C Console" |
| 特定のパッケージに関連するすべてのメタデータ | sfdx force:source:retrieve -n DreamHouse |
メタデータを取得するときに指定できる範囲指定パラメータは、--metadata、--sourcepath、または --manifest のいずれかです。--packagenames を指定した場合、範囲指定パラメータを 1 つ追加することができます。
1sfdx force:source:retrieve -n DreamHouse, -x manifest/package.xmlソースが追跡されない組織へのソースのリリース
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 クラスと、名前にスペースを含むプロファイル | sfdx force:source:deploy -m "ApexClass, Profile:Content Experience Profile" |
| 最近 Apex テストの実行なしに検証されたコンポーネントセット (クイックリリースとも呼ばれます)。 |
sfdx force:source:deploy -q VALIDATEDDEPLOYREQUESTID このオプションは、テストを実行し、コードカバー率の要件を渡し、-c | --checkonly を使用してチェックのみのリリースを実行した後に実行できます。 |
| リリースに警告が含まれている場合も実行 | sfdx force:source:deploy -g |
| リリースにエラーが含まれているかどうかに関係なく実行 (本番組織にリリースする場合は推奨されません) | sfdx force:source:deploy -o |
追跡されないソースの削除
force:source:delete コマンドを使用して、Sandbox など、ソース追跡のない組織からコンポーネントを削除します。
ソースがローカルの 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