deploy()
構文
使用方法
このコールを使用して、ファイル表現のコンポーネントを取得し、ファイル表現のコンポーネントが表すコンポーネントを作成、更新、または削除することにより、組織にファイル表現のコンポーネントをリリースします。
リリース制限は次のとおりです。
| 機能 | 制限 |
|---|---|
| 最大圧縮 .zip フォルダサイズ1 | 約 39 MB |
| 最大非圧縮フォルダサイズ 2 | 約 400 MB |
| AppExchange パッケージの最大ファイル数 | 35,000 |
| パッケージの最大ファイル数 | 10,000 |
1 メタデータ API base-64 では、コンポーネントを圧縮後にエンコードします。結果の .zip ファイルの最大サイズは 50 MB です。Base-64 エンコードではペイロードのサイズが約 22% 増加するため、エンコードする前に、圧縮済みペイロードが約 39 MB を超えることはできません。
2 Ant 移行ツールを使用して、展開したプロジェクトをリリースする場合、まずプロジェクト内のすべてのファイルが圧縮されます。非圧縮プロジェクト内の非圧縮コンポーネントの最大サイズは、ファイルの圧縮率に応じて 400 MB 以下です。ファイルの圧縮率が高い場合、圧縮されたサイズは 39 MB を下回るため、合計およそ 400 MB を移行できます。ただし、バイナリ静的リソースのように、それほど圧縮できないコンポーネントの場合、移行できるのは 400 MB 未満です。
API バージョン 29.0 では、Salesforce は、リリース状況プロパティを改善し、deploy() コール後にリリースに関する情報を取得するために checkStatus() を使用する要件を削除しました。Salesforce では、API バージョン 28.0 以前で deploy() を使用する場合の checkStatus() の使用を引き続きサポートします。
組織へのコンポーネントのリリース
package.xml ファイルは、取得またはリリースするすべてのコンポーネントをリストするプロジェクトマニフェストです。package.xml を使用して、コンポーネントを追加できます。コンポーネントを削除するには、別のマニフェストファイルを追加します。「組織からのコンポーネントの削除」を参照してください。
API バージョン 29.0 以降の場合、パッケージ化されたコンポーネントまたはパッケージ化されていないコンポーネントをリリース (作成または更新) する方法は次のとおりです。
- deploy() コールを発行して、非同期リリースを開始すると、AsyncResult オブジェクトが返されます。id 項目の値をメモし、次のステップで使用します。
- checkDeployStatus() コールの発行を、返され�� DeployResult の done 項目がコールの完了を示す true になるまでループします。DeployResult オブジェクトには、deploy() コールを使用して開始された進行中または完了済みのリリースに関する情報が含まれます。checkDeployStatus() をコールするとき、最初のステップの AsyncResult オブジェクトから id 値を渡します。
API バージョン 28.0 以前の場合、パッケージ化されたコンポーネントまたはパッケージ化されていないコンポーネントをリリース (作成または更新) する方法は次のとおりです。
- deploy() コールを発行して、非同期リリースを開始すると、AsyncResult オブジェクトが返されます。コールが完了すると、done 項目に true が含まれます。ほとんどの場合、コールはすぐに完了しないため最初の結果に記述されません。完了している場合、返された id 項目の値を書き留め、次のステップを省略します。
- コールが完了していない場合、ループ内で checkStatus() コールを発行します。このループ内で、前のステップで deploy() コールから返された AsyncResult オブジェクトの id 項目の値を使用します。done 項目に true が含まれるまで、返される AsyncResult オブジェクトを確認します。deploy() コールを完了するまでにかかる時間は、リリースする zip ファイルのサイズによって異なります。そのため、zip ファイルのサイズが大きいほど、反復間の待機時間を長くします。
- 最初のステップで返された id 値を使用して、checkDeployStatus() コールを発行し、deploy() コールの結果を取得します。
リリースの状況の確認
メタデータ API を使用するか、[設定] からリリースの状況を確認します。進行中または過去 30 日間に完了したリリースの状況を確認できます。
メタデータ API を使用してリリースの状況を確認するには、checkDeployStatus() を参照してください。
[設定] からリリースの状況を確認するには、[クイック検索] ボックスに「リリース状況」と入力し、[リリース状況] を選択します。
リリースの実行中、[リリース状況] ページには、現在のリリースについてリアルタイムの進行状況が表示されます。このページでは、グラフで全体的なリリースの進行状況が視覚的に表現されます。最初のグラフでは、コンポーネント総数のうちリリースが終了したコンポーネント数と、エラーがあったコンポーネント数が表示されます。たとえば、次のグラフは、450 コンポーネント中 302 コンポーネントが正常に処理され、45 コンポーネントにエラーがあったことを示しています。
すべてのコンポーネントがエラーなしでリリースされると、必要または有効な場合は Apex テストが実行を開始します。2 つ目のグラフは、Apex テストの総数のうち、実行された数と、返されたエラーの数が表示されます。さらに、このグラフには現在実行中のテスト名が表示されます。たとえば、次のグラフでは、合計 120 件のテストのうち 77 件の実行が完了し、1 件が失敗したことを示しています。
複数のリリースを開始できますが、一度に実行できるリリースは 1 つのみです。その他のリリースはキューに残り、現在のリリースの終了後に実行されるまで待機します。キューに入れられたリリースは、実行される順序で [待機中のリリース] の下に表示されます。
リリースのキャンセル
メタデータ API を使用するか、[設定] からリリースをキャンセルします。進行中またはキュー内のリリースをキャンセルできます。
メタデータ API を使用してリリースをキャンセルするには、cancelDeploy() を参照してください。
[設定] からリリースをキャンセルするには、[クイック検索] ボックスに「リリース状況」と入力し、[リリース状況] を選択します。キャンセルするリリースの横にある [キャンセル] をクリックします。キャンセルが完了するまで、リリースの状況は [キャンセル要求済み] になります。キャンセルされたリリースは、[失敗] セクションにリストされます。
引数
| 名前 | 型 | 説明 |
|---|---|---|
| zipFile | base64 | Base 64 で符号化されたバイナリデータ。クライアントアプリケーションは、バイナリデータを base64 に符号化する必要があります。 |
| deployOptions | DeployOptions | リリースするパッケージまたはファイルを特定するためのオプションをカプセル化します。 |
DeployOptions
このコールでは次のリリースオプションを選択できます。
| 名前 | 型 | 説明 |
|---|---|---|
| allowMissingFiles | boolean | package.xml に指定されているファイルが .zip ファイル内に存在しない場合、リリースを継続するかどうかを指定します。 |
| autoUpdatePackage | boolean | ファイルが .zip ファイルにはあるが、package.xml で指定されていない場合、ファイルを自動的にパッケージに追加するかどうかを指定します。.zip ファイルを含む package.xml が更新された場合は、retrieve() が発行されます。 本番組織へのリリースでは、この引数を設定することはできません。 |
| checkOnly | boolean | デフォルトは false です。コンポーネントを対象組織に保存せずにコンポーネントのテストリリース (検証) を実行するには、true に設定します。検証では、リリースで生成されるテストの結果を確認できますが、変更はコミットされません。テストに合格して検証が完了したら、テストを再実行することなくリリースできる場合があります。「deployRecentValidation()」を参照してください。 |
| ignoreWarnings | boolean |
警告付きのリリースが正常に完了するか (true)、否か (false) を示します。デフォルトは false です。 警告の DeployMessage オブジェクトには次の値が含まれます。
警告が発生し、ignoreWarnings が true に設定されている場合は、DeployMessage の success 項目は true です。ignoreWarnings が false に設定されている場合、success は false に設定され、警告はエラーとして処理されます。 この項目は、API バージョン 18.0 以降で使用できます。バージョン 18.0 より前では、警告とエラーは区別されていませんでした。すべての問題はエラーとして処理され、リリースの成功を妨げていました。 |
| performRetrieve | boolean | retrieve() コールをリリース直後に実行するか (true)、否か (false) を示します。リリース直後のものをすべて取得するには true に設定します。 |
| purgeOnDelete | boolean |
true の場合、destructiveChanges.xml マニフェストファイルの削除されたコンポーネントはごみ箱に保存されません。代わりに、即座に削除の対象となります。 この項目は、API バージョン 22.0 以降で使用できます。 このオプションは Developer Edition 組織または Sandbox 組織でのみ機能しますが、本番組織では機能しません。 |
| rollbackOnError | boolean | エラーが発生した場合、ロールバックを完了するか (true)、否か (false) を示します。false の場合、エラーなしで実行できるアクションはすべて実行され、残りのアクションではエラーが返されます。本番組織にリリースする場合は、このパラメータは true に設定されている必要があります。デフォルトは、false です。 |
| runAllTests | boolean | (廃止。API バージョン 33.0 以前でのみ使用可能) この項目のデフォルトは false です。インストール済みの管理パッケージから作成されたテストを含むすべての Apex テストをリリース後に実行するには、true に設定します。 |
| runTests | string[] | リリース時に実行される Apex テストのリスト。クラス名 (1 インスタンスあたり 1 つの名前) を指定します。また、クラス名にはドット表記で名前空間を指定することもできます。詳細は、「リリースでのテストのサブセットの実行」を参照してください。 このオプションを使用するには、testLevel を RunSpecifiedTests に設定します。 |
| singlePackage | boolean | 指定された .zip ファイルが指し示すディレクトリ構造が 1 つのパッケージを持つか (true)、パッケージのセットを持つか (false)) を示します。 |
| testLevel | TestLevel (string 型の列挙) | 省略可能。リリースの一環として実行するテストを指定します。テストレベルは、リリースパッケージに存在するコンポーネントの種類に関係なく強制適用されます。有効な値は、次のとおりです。
テストレベルを指定しないと、デフォルトのテスト実行動作が使用されます。「リリースでのテストの実行」を参照してください。 この項目は、API バージョン 34.0 以降で使用できます。 |
応答
サンプルコード — Java
このサンプルでは、zip ファイルでコンポーネントをリリースする方法を示します。zip ファイルの取得方法についての詳細は、retrieve() のサンプルコードを参照してください。