この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

プロジェクトからスクラッチ組織へのソースのリリース

ソースの変更後、project deploy start コマンドで変更されたソースをスクラッチ組織にリリースすることで、変更を同期できます。

スクラッチ組織では、デフォルトでソース追跡が実行されます。ただし、継続的インテグレーション環境で迅速にリリースしたい場合など、ソース追跡を必要としないこともあります。スクラッチ組織の作成時、--no-track-source フラグを指定してソース追跡を除外できます。

1sf org create scratch --definition-file config/project-scratch-def.json --no-track-source

ソース追跡を無効にするその他の理由については、「スクラッチ組織の作成」を参照してください。

メモ

初めてソースを組織にリリースするとき、sfdx-project.json ファイルのパッケージディレクトリ内にあるすべてのソースがスクラッチ組織にリリースされて初期設定が完了します。この時点で、Salesforce CLI によって、ファイルシステムではローカルに、スクラッチ組織ではリモートで、ソース追跡が開始され、どのメタデータが変更されたかが判別されます。たとえば、Apex クラスをスクラッチ組織にリリースし、ローカルファイルシステムではなくスクラッチ組織のクラスを変更することにしたとします。Salesforce CLI は、どのローカルパッケージディレクトリでクラスが作成されたかを追跡しているため、クラスを元のプロジェクトに戻すときにも、そのクラスがどこに属しているかを認識しています。

リリースコマンド (このトピックで後述します) を実行するには、ターミナル (macOS および Linux) またはコマンドプロンプト (Windows) を開いてから、Salesforce DX プロジェクトディレクトリに移動します。

リリースのプレビュー

組織にソースをリリースする前に、project deploy preview を実行することで、リリースするコンポーネント、潜在的な競合、無視されるファイルをプレビューできます。たとえば、このコマンドは、プロジェクトのすべてのソースを MyGroovyScratchOrg という別名を持つスクラッチ組織にリリースする際のプレビューを表示します。

1sf project deploy preview --target-org MyGroovyScratchOrg

プレビューする対象のソースを指定するには、フラグを使用します。たとえば、マニフェスト内でリストアップされているソースのみを指定できます。この例では、--target-org はスクラッチ組織のユーザー名を参照しています。

1sf project deploy preview --manifest package.xml --target-org test-am6xqkossaq8@example.com

組織の別名は、alias set を使用して作成できます。作成したすべてのスクラッチ組織のユーザー名と別名を表示するには、org list を実行します。

ヒント

スクラッチ組織へのソースのリリース

変更されたローカルソースをデフォルトのスクラッチ組織にリリースするには、次のコマンドを実行します。

1sf project deploy start

このコマンドはリリースした内容を表示します。このサンプル出力は、PropertyController Apex クラスのリリースについて示しています。

1Deploying v58.0 metadata to test-am6xqkossaq8@example.com using the v59.0 SOAP API.
2Deploy ID: 0Af7e00001WsuoSCAR
3Status: Succeeded | ████████████████████████████████████████ | 1/1 Components (Errors:0) | 0/0 Tests (Errors:0)
4
5Deployed Source
6=====================================================================================================
7| State   Name               Type      Path                                                           
8| ─────── ────────────────── ───────── ────────────────────────────────────────────────────────────── 
9| Changed PropertyController ApexClass force-app/main/default/classes/PropertyController.cls          
10| Changed PropertyController ApexClass force-app/main/default/classes/PropertyController.cls-meta.xml

フラグを使用することで、変更���れたすべてのソースではなく、リリースしたいソースを対象に指定できます。

  • -metadata フラグは、Apex クラスなどの特定のメタデータコンポーネントをリリースする場合に使用します。
  • --manifest フラグは、マニフェストファイル内のコンポーネントをリリースする場合に使用します。
  • --source-dir は、パッケージディレクトリ内のソースをリリースする場合に使用します。

使用例や、指定できる他のフラグについては、project deploy start のリファレンス情報を参照してください。

リリース時に無視するファイルの選択

プロジェクトとスクラッチ組織の間で同期しないファイルがある場合があります。そのようなファイルは .forceignore ファイルに追加して、リリースコマンドで無視されるようにします。

リリースで警告が検出された場合

project deploy start を実行し、警告が発生した場合、Salesforce CLI はソースをリリースしません。警告は、プロジェクトのソースが古いバージョンを使用している場合などに発生することがあります。こうした警告を無視してソースをスクラッチ組織にリリースする場合は、次のコマンドを実行します。

1sf project deploy start --ignore-warnings

このオプションを使用して正常にリリースできますが、ソースファイルの問題に対処することをお勧めします。たとえば、Visualforce ページが古いバージョンを使用しているために警告が表示される場合、ページを Visualforce の最新バージョンに更新することを検討してください。これにより、新機能を利用でき、パフォーマンスが向上する可能性があります。

ヒント

リリースでファイル競合が検出された場合

開発時、開発者は Salesforce が提供するビルダーやエディターを使用して直接ファイルシステムのファイルをローカルに変更したり、スクラッチ組織を変更したりします。通常、これらの変更は競合せず、固有のファイルが対象となります。また、project deploy start コマンドではマージは処理されません。プロジェクトとスクラッチ組織は、1 人の開発者が使用するためのものです。

ただし、project deploy start を実行して、競合が検出された場合、Salesforce CLI は処理を中止し、ソースをリリースしません。代わりに、次のサンプル出力のような競合情報が表示されます。PropertyController の Apex クラスはローカルと組織の両方で変更されましたが、変更が競合しています。

1sf project deploy start
2 STATE    FULL NAME          TYPE      FILE PATH                                                                                                 
3 ──────── ────────────────── ───────── ───────────────────────────────────────────────────────────────────────────────────────────────────────── 
4 Conflict PropertyController ApexClass <dir>/force-app/main/default/classes/PropertyController.cls-meta.xml 
5 Conflict PropertyController ApexClass <dir>/force-app/main/default/classes/PropertyController.cls          
6Error (1): There are changes in the org that conflict with the local changes you're trying to deploy.

最初に維持する変更を決定します。ローカルの変更を維持するには、--ignore-conflicts フラグを指定してリリースを再実行します。

1sf project deploy start --ignore-conflicts

組織の変更を維持するには、変更をローカルプロジェクトで取得するために --ignore-conflicts フラグを指定して project retrieve start コマンドを実行します。

1sf project retrieve start --ignore-conflicts