任意の組織に対する開発
Salesforce CLI を使用することで、スクラッチ組織でソースの転送およびリリースを (ソース形式を使用して) 行うのと同じように、ソース追跡のない組織でも簡単にメタデータの取得とリリースを (メタデータ形式を使用して) 行うことができます。Salesforce CLI に慣れていない場合、ソース形式とメタデータ形式の違いについては、「Salesforce DX プロジェクトの構造とソースファイル形式」を参照してください。
project retrieve start を使用すれば、メタデータをソース形式でローカルファイルシステム (DX プロジェクト) に取得できます。テストまたは本番組織への変更の準備ができたら、project deploy start を使用してローカルファイルをソース追跡のない組織に直接リリースできます。
どのメタデータ型がサポートされるのか、どのメタデータ型で package.xml のワイルドカードがサポートされるのかがわからない場合は、『メタデータ API 開発者ガイド』の「メタデータ型」を参照してください。
操作を開始する前に
- マニフェスト (package.xml) を持つ Salesforce DX プロジェクトを作成します。project generate --name mywork MyProject --manifest を実行します。
- ソースが追跡されない組織を認証します。Sandbox に接続している場合は、組織を認証する前に、sfdx-project.json ファイルを編集して、sfdcLoginUrl を https://test.salesforce.com に設定します。必ず、ソースが追跡されない組織の別名を作成してください。
コマンドラインでエンコードが必要なメタデータ名
--metadata オプションを使用してメタデータを取得またはリリースするとき、適切に動作するにはメタデータ名のコンマのエンコードが必要です。
使用不可: sf project deploy start --metadata "Profile:Standard User" --metadata "Layout:Page,Console"
使用可能: sf project deploy start --metadata "Profile:Standard User" --metadata "Layout:Page%2CConsole"
ソースが追跡されない組織からのソースの取得
Sandbox や本番組織など、ソース追跡のない組織からソースを取得するには、project retrieve start コマンドを使用します。すでに VCS にソースコードとメタデータがある場合、このステップは省略できる可能性があります。新たに開始した場合、使用する機能、プロジェクト、またはカスタマイズに関連付けられたメタデータを取得します。
ソース形式でメタデータを取得するには、次のいずれかの方法を使用します。
- 取得するコンポーネントをリストした package.xml を指定する。
- メタデータコンポーネント名のカンマ区切りリストを指定する。
- 取得するソースファイルパスのカンマ区切りリストを指定する。たとえば、ソースがローカルに存在する場合、最初の取得が完了した後にソースファイルオプションのパスを使用できます。
- パッケージ名のカンマ区切りリストを指定する。
指定するカンマ区切りリストにスペースが含まれる場合、カンマ区切りリスト全体を 1 組の二重引用符で囲みます。
| 取得対象 | コマンド例 |
|---|---|
| マニフェストにリストされたすべてのメタデータコンポーネント | sf project retrieve start --manifest path/to/package.xml |
| ディレクトリ内のソースファイル | sf project retrieve --source-dir path/to/source |
| 特定の Apex クラスとディレクトリにソースがあるオブジェクト | sf project retrieve --source-dir path/to/apex/classes/MyClass.cls --source-dir path/to/source/objects |
| スペースを含むメタデータ | sf project retrieve start --metadata "Profile:Standard User" |
| すべての Apex クラス | sf project retrieve --metadata ApexClass |
| 特定の Apex クラス | sf project retrieve --metadata ApexClass:MyApexClass |
| カンマを含むレイアウト名 (「Layout: Page, Console」) | sf project retrieve --metadata "Layout:Page%2C Console" |
| 特定のパッケージに関連するすべてのメタデータ | sf project retrieve --metadata --package-name DreamHouse |
メタデータを取得するときに指定できる範囲指定パラメーターは、--metadata、--source-dir、または --manifest のいずれかです。--package-name を指定した場合、範囲指定パラメーターを 1 つ追加することができます。
1sf project retrieve start --package-name DreamHouse --manifest manifest/package.xmlソースが追跡されない組織へのソースのリリース
project deploy start コマンドを使用して、Sandbox や本番組織など、ソース追跡のない組織へソースをリリースします。
ソース形式でメタデータをリリースするには、次の方法を使用します。
- リリースするコンポーネントをリストした package.xml を指定する
- メタデータコンポーネント名のカンマ区切りリストを指定する
- リリースするソースファイルパスのカンマ区切りリストを指定する
指定するカンマ区切りリストにスペースが含まれる場合、カンマ区切りリスト全体を 1 組の二重引用符で囲みます。
| リリース対象 | コマンド例 |
|---|---|
| マニフェストにリストされたすべてのコンポーネント | sf project deploy start --manifest path/to/package.xml |
| ディレクトリ内のソースファイル | sf project deploy start --source-dir path/to/source |
| 特定の Apex クラスとディレクトリにソースがあるオブジェクト | sf project deploy start --source-dir path/to/apex/classes/MyClass.cls --source-dir path/to/source/objects |
| すべての Apex クラス | sf project deploy start --metadata ApexClass |
| 特定の Apex クラス | sf project deploy start --metadata ApexClass:MyApexClass |
| すべてのカスタムオブジェクトと Apex クラス | sf project deploy start --metadata CustomObject --metadata ApexClass |
| すべての Apex クラスと、名前にスペースを含むプロファイル | sf project deploy start --metadata ApexClass --metadata "Profile:Content Experience Profile" |
| 最近 Apex テストの実行なしに検証されたコンポーネントセット (クイックリリースとも呼ばれます)。 |
sf project deploy quick --job-id JOBID このオプションは、テストを実行し、コードカバー率の要件を渡し、ジョブ ID を返す project deploy validate コマンドを使用してチェックのみのリリースを実行した後に、実行できます。 |
| リリースに警告が含まれている場合も実行 | sf project deploy start --ignore-warnings |
| リリースにエラーが含まれているかどうかに関係なく実行 (本番組織にリリースする場合は推奨されません) | sf project deploy start --ignore-errors |
追跡されないソースの削除
project delete source コマンドを使用して、Sandbox など、ソース追跡のない組織からコンポーネントを削除します。
ソースがローカルの DX プロジェクトに存在する場合、ソースへのパスを指定するか、個々のメタデータコンポーネントをリストすることで、メタデータを削除できます。指定するカンマ区切りリストにスペースが含まれる場合、カンマ区切りリスト全体を 1 組の二重引用符で囲みます。
| 削除対象 | コマンド例 |
|---|---|
| ディレクトリ内のソースファイル | sf project delete source --source-dir path/to/source |
| FlexiPage など、特定のコンポーネント | sf project delete source --metadata FlexiPage:Broker_Record_Page |
| スペースを含む特定のコンポーネント | sf project delete source --metadata "Profile:Content Experience Profile" |
生成されたメタデータを保持する場合
通常、一部の CLI コマンドを実行すると、すべてのメタデータを含む一時ディレクトリが作成され、コマンドの正常な完了時に削除されます。ただし、これらのファイルを保持しておくと、いくつかの理由で便利です。コマンド実行時に発生した問題をデバッグできます。生成される package.xml を後続のコマンド実行時に使用できます。または、必要なすべてのメタデータが含まれるマニフェストを作成するための開始点として使用できます。
次のコマンドの実行時に指定したディレクトリパスにすべてのメタデータを保持するには、SF_MDAPI_TEMP_DIR 環境変数を設定します。
- project deploy start
- project retrieve start
- project delete source
- project convert mdapi|source
- org create scratch (スクラッチ組織定義に、組織設定ではなくスクラッチ組織設定が含まれる場合)
例:
1SF_MDAPI_TEMP_DIR=/users/myName/myDXProject/metadata