メタデータの比較とリリース

今回はSalesforceのメタデータの比較を含んだリリース手法を紹介します。

はじめに

皆さんはSalesforceの環境間でのリリースでこんな経験はありませんか?

今回は、そんな悩み事を解消したリリース手法をご紹介します。

前提条件

  1. sfコマンドがインストールされていること
    ※sfdxコマンドを利用中の方へ
     sfdxコマンドはサポートが終了されています。
     下記の記事に従って、sfコマンドに移行しましょう。
     sfdx (v7) から sf (v2) への移行

  2. Salesforce CLIでリリース元組織とリリース先組織が認証済みであること
    ※VSCodeで認証してあっても大丈夫です。

package.xmlの作成

package.xmlとは、Salesforce組織からメタデータを取得・デプロイするために利用されるXML形式のファイルです。
参考: package.xml マニフェストファイルのサンプル

リリース資材に含めたいメタデータをリストアップして、任意の手法で作成してください。
手打ちしても構いませんし、「Salesforce Package.xml Generator Extension for VS Code」等のツールを使用しても構いません。

メタデータの取得

作成したpackage.xmlを利用して、sfコマンドでメタデータを取得します。
以下のコマンドを、オプションを変えて2回実行し、リリース元組織とリリース先組織からそれぞれ取得します。

メタデータの取得コマンド:
sf project retrieve start --manifest path/to/package.xml --target-metadata-dir output --unzip --target-org org_alias

コマンドのオプションについては以下の通りです。

メタデータの比較

取得したメタデータを、「WinMerge」や「Compare Folders」といったツールで比較します。
リリース元組織とリリース先組織の間で、想定していない差分がないか確認しましょう。

想定していない差分がある場合、リリース元組織を編集して再度メタデータを取得するか、メタデータを直接編集します。

メタデータの編集

リリース元組織のメタデータを、リリース用の別のフォルダにコピーし、コピーしたファイルを必要に応じて編集します。
取得時、フォルダ構成がoutput(指定したフォルダ名)/unpackaged/unpackaged/となっているので、最後のunpackagedフォルダをコピーして別の場所に貼り付け、フォルダ名を変更してください。

特にプロファイルについて、ログイン IP アドレスの制限をリリースしたくない場合はloginIpRangesタグの部分、システム管理者権限・一般ユーザ権限をリリースしたくない場合はuserPermissionsタグの部分といったように、不要な箇所を削除します。

メタデータのリリース

リリース用のフォルダのメタデータを、sfコマンドを用いてリリースします。

メタデータの検証

メタデータの検証コマンド:
sf project deploy start --dry-run --metadata-dir release_metadata --test-level RunSpecifiedTests --tests test1 test2 --target-org org_alias

コマンドのオプションについては以下の通りです。

検証結果は、リリース先組織の設定画面のリリース状況から確認できます。

メタデータのリリース

検証が成功したら、リリースを実行します。

クイックリリースが可能な場合は、リリース先組織の設定画面のリリース状況からクイックリリースを行いましょう。
Apexクラスが含まれない等でクイックリリースができない場合、前述の検証コマンドから--dry-runを削除して実行しましょう。
よって、リリースコマンドは以下のようになります。

メタデータのリリースコマンド:
sf project deploy start --metadata-dir release_metadata --test-level RunSpecifiedTests --tests test1 test2 --target-org org_alias

リリース後にリリース先組織からメタデータを取得し、元のリリース先組織のメタデータやリリース元組織のメタデータと比較すると、過不足なくリリースできているか確認できるので、なおよいですね。

おわりに

今回は、Salesforceのメタデータの比較を含んだリリース手法を紹介させていただきました。

皆さんも、本記事の手法でメタデータを比較して、安全にリリースを行ってみませんか。