Salesforce DXで未管理パッケージがサポートされるようになったみたいです。※ベータ機能
詳細についてはTrailheadで紹介されています。
- 企業顧客が Salesforce DX を使用して未ロックパッケージを使用する方法を説明する。
- パッケージ開発と変更セット開発との違いを説明する。
- パッケージを使用してメタデータをリリースする方法を説明する。
- 未ロックパッケージの長所と短所を挙げる。
- パッケージ化のための CLI コマンドに慣れる。
- 基本的なパッケージ化の使用事例を説明する。
- DreamHouse サンプルアプリケーションをパッケージ化して、Trailhead Playground にインストールする。
利用例
Dev Hubへのログイン
下記コマンドを実行するとログインページが表示されます。ログインするとDevHub組織として認証されます。
$ sfdx force:auth:web:login -d -a DevHub
終わったらブラウザをクローズして問題ありません。
下記のコマンドでいつでも組織にアクセスできます。
$ sfdx force:org:open -u DevHub
下記のコマンドでSalesforce CLIに登録した組織を確認できます。
$ sfdx force:org:list
DreamHouse ソースコードの取得
下記のコマンドでGitHubからサンプルコードを取得できます。
$ git clone https://github.com/dreamhouseapp/dreamhouse-sfdx.git
スクラッチ組織の作成
下記のコマンドで新しいスクラッチ組織を作成します。GitHubからダウンロードしたサンプルコードをベースに作成するのでdreamhouse-sfdxに移動して実行します。
$ sfdx force:org:create --definitionfile config/project-scratch-def.json --durationdays 30 --setalias MyScratchOrg
コマンドのオプションは下記の意味を持ちます。
デフォルトのスクラッチ組織定義を使用します。これは、Trailhead Playground と同じエディションである Developer Edition のスクラッチ組織を作成します。期間は 30 日に設定し、開発の作業を完了 (またはこの Trailhead モジュールを完了) するために十分な時間を用意します。
DevHub組織で作成できていることを確認できます。
下記のコマンドでスクラッチ組織にアクセスできます。
$ sfdx force:org:open -u MyScratchOrg
この時点ではまっさらな組織です。
パッケージの作成
サンプルコードをパッケージ化します。
$ sfdx force:package2:create --name dreamhouse --description "My Package" --containeroptions Unlocked --nonamespace --targetdevhubusername DevHub
実行したところエラーになりました。
下記のリンク先の手順でDebHub組織の設定で有効化が必要になります。
パッケージバージョンの作成とスクラッチ組織へのインストール
パッケージをリリースする準備ができたら、パッケージバージョンと呼ばれるスナップショットを作成します。パッケージバージョンのインストールは、メタデータのリリースと同様です。パッケージバージョンは、一度作成されると、特定のメタデータセットを含む不変のアイテムとして機能します。
1. 任意のテキストエディタで sfdx-project.json を開き、パッケージバージョンオプションを更新します。
2. パッケージ作成コマンドの出力内容を使用して、Package2 ID を更新します。
3. versionName を Version 1.0 に、versionNumber を 1.0.0.NEXT に変更します。force-app ディレクトリは、デフォルト (かつ、唯一の) パッケージディレクトリです。このため、そこに含まれるすべてのソースはパッケージに含まれます。更新すると、sfdx-project.json ファイルは次のようになります。
{ "packageDirectories": [ { "path": "force-app", "default": true, "id": "0Ho_xxx", "versionName": "Version 1.0", "versionNumber": "1.0.0.NEXT" } ], "namespace": "", "sfdcLoginUrl": "https://login.salesforce.com", "sourceApiVersion": "42.0" }
最新版だとこんな感じ。
4. sfdx-project.json ファイルを保存します。
5. dreamhouse-sfdx ディレクトリでパッケージバージョンを作成します。これは、メタデータをパッケージに関連付けます。
$ sfdx force:package2:version:create --directory force-app --wait 10
パッケージバージョン作成プロセスは、通常数分かかります。
パッケージバージョンを組織にインストールするには、登録者 Package2 バージョン ID (04t で始まる) が必要です。登録者パッケージ ID は、あらゆる組織にインストールできる不変のパッケージバージョンを示しており、CI、UAT、最終リリースに使用できます。
6. すでに作成したスクラッチ組織に、パッケージバージョンをインストールします。
$ sfdx force:package:install -i 04t_xxx -u MyScratchOrg --wait 10 --publishwait 10
新しく作成したパッケージバージョンがスクラッチ組織で使用できるようになるまでに、数分かかることがあります。パッケージバージョンが使用可能になると、インストールが開始します。
7. パッケージをインストールしたら、スクラッチ組織を開いて、パッケージを表示します。
$ sfdx force:org:open -u MyScratchOrg
8. [Setup (設定)] から、[ Quick Find (クイック検索)] ボックスに「Installed Packages (インストール済みパッケージ)」と入力し、[Installed Packages (インストール済みパッケージ)] を選択します。
これは未ロックパッケージであるため、スクラッチ組織で直接変更して、更新されたメタデータを取得して、新しいパッケージバージョンを作成できます。ここでは、DreamHouse アプリケーションにはすでに必要な要素がそろっているため、先に進んで、パッケージをリリースします。
パッケージバージョンのリリース
まだ説明していない機能に、パッケージ状態があります。パッケージは、最初に作成したときはベータ状態です。ベータパッケージは本番組織にインストールできません。これは、リリースするパッケージバージョンが本番用に準備完了であることを保証するための予防策です。バージョンの公開準備が完了している場合、状態をリリース済みに設定します。
$ sfdx force:package2:version:update -i 05i_xxx --setasreleased
version:create コマンドの出力から、Package2 バージョン ID (05i で始まる) を取得します。パッケージバージョンの特定の先祖の指定や、パッケージバージョンの昇格のために使用します。
スクラッチ組織のページやクラスにも反映されています。
組織へのパッケージバージョンのインストール
重要な点ですが、最後に、パッケージバージョンを組織にインストールします。ベータパッケージバージョンは、スクラッチ組織、Sandbox、Trailhead Playground (DE 組織) にインストールできます。リリース済みパッケージバージョンは、すべての組織にインストールできます。
1. Trailhead Playground にパッケージバージョンをインストールするには、ログインします。
$ sfdx force:auth:web:login -a MyTP
Trailhead Playground 用の別名を作成することをお勧めします。この例では MyTP です。組織にログインすると、CLI がログイン情報を記憶します。以降のコマンド発行時に必要となるのは、組織の別名を覚えておくことのみです。
Trailhead Playground のユーザ名とパスワードがわからない場合は、「ユーザ名を取得してパスワードをリセットする。」を参照してください。
2. Trailhead Playground にパッケージバージョンをインストールします。
$ sfdx force:package:install -i 04t_xxx -u MyTP -w 10 -p 10
これでインストールができました。