tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:Salesforce DXと未管理パッケージ

Salesforce DXで未管理パッケージがサポートされるようになったみたいです。※ベータ機能

f:id:tyoshikawa1106:20180805125614p:plain


詳細についてはTrailheadで紹介されています。

  • 企業顧客が Salesforce DX を使用して未ロックパッケージを使用する方法を説明する。
  • パッケージ開発と変更セット開発との違いを説明する。
  • パッケージを使用してメタデータをリリースする方法を説明する。
  • 未ロックパッケージの長所と短所を挙げる。
  • パッケージ化のための CLI コマンドに慣れる。
  • 基本的なパッケージ化の使用事例を説明する。
  • DreamHouse サンプルアプリケーションをパッケージ化して、Trailhead Playground にインストールする。

利用例

Salesforce DXの利用環境構築

詳細はこちら。トライアル環境があります。

Salesforce DX の設定 単元 | Salesforce Trailhead

Dev Hubへのログイン

下記コマンドを実行するとログインページが表示されます。ログインするとDevHub組織として認証されます。

$ sfdx force:auth:web:login -d -a DevHub

f:id:tyoshikawa1106:20180805131744p:plain:w300


終わったらブラウザをクローズして問題ありません。
f:id:tyoshikawa1106:20180805131815p:plain


下記のコマンドでいつでも組織にアクセスできます。

$ sfdx force:org:open -u DevHub

f:id:tyoshikawa1106:20180805131933p:plain


下記のコマンドでSalesforce CLIに登録した組織を確認できます。

$ sfdx force:org:list

f:id:tyoshikawa1106:20180805132101p:plain


DreamHouse ソースコードの取得

下記のコマンドでGitHubからサンプルコードを取得できます。

$ git clone https://github.com/dreamhouseapp/dreamhouse-sfdx.git

f:id:tyoshikawa1106:20180805132254p:plain

スクラッチ組織の作成

下記のコマンドで新しいスクラッチ組織を作成します。GitHubからダウンロードしたサンプルコードをベースに作成するのでdreamhouse-sfdxに移動して実行します。

$ sfdx force:org:create --definitionfile config/project-scratch-def.json --durationdays 30 --setalias MyScratchOrg

f:id:tyoshikawa1106:20180805132718p:plain


コマンドのオプションは下記の意味を持ちます。

デフォルトのスクラッチ組織定義を使用します。これは、Trailhead Playground と同じエディションである Developer Edition のスクラッチ組織を作成します。期間は 30 日に設定し、開発の作業を完了 (またはこの Trailhead モジュールを完了) するために十分な時間を用意します。

f:id:tyoshikawa1106:20180805133036p:plain


DevHub組織で作成できていることを確認できます。
f:id:tyoshikawa1106:20180805132811p:plain


下記のコマンドでスクラッチ組織にアクセスできます。

$ sfdx force:org:open -u MyScratchOrg


この時点ではまっさらな組織です。
f:id:tyoshikawa1106:20180805133255p:plain

パッケージの作成

サンプルコードをパッケージ化します。

$ sfdx force:package2:create --name dreamhouse --description "My Package" --containeroptions Unlocked --nonamespace --targetdevhubusername DevHub


実行したところエラーになりました。
f:id:tyoshikawa1106:20180805135021p:plain


下記のリンク先の手順でDebHub組織の設定で有効化が必要になります。


f:id:tyoshikawa1106:20180805135705p:plain

パッケージバージョンの作成とスクラッチ組織へのインストール

パッケージをリリースする準備ができたら、パッケージバージョンと呼ばれるスナップショットを作成します。パッケージバージョンのインストールは、メタデータのリリースと同様です。パッケージバージョンは、一度作成されると、特定のメタデータセットを含む不変のアイテムとして機能します。

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"
}


最新版だとこんな感じ。
f:id:tyoshikawa1106:20180805140245p:plain


4. sfdx-project.json ファイルを保存します。
5. dreamhouse-sfdx ディレクトリでパッケージバージョンを作成します。これは、メタデータをパッケージに関連付けます。

$ sfdx force:package2:version:create --directory force-app --wait 10


パッケージバージョン作成プロセスは、通常数分かかります。
f:id:tyoshikawa1106:20180805142435p:plain


パッケージバージョンを組織にインストールするには、登録者 Package2 バージョン ID (04t で始まる) が必要です。登録者パッケージ ID は、あらゆる組織にインストールできる不変のパッケージバージョンを示しており、CI、UAT、最終リリースに使用できます。


6. すでに作成したスクラッチ組織に、パッケージバージョンをインストールします。

$ sfdx force:package:install -i 04t_xxx -u MyScratchOrg --wait 10 --publishwait 10

f:id:tyoshikawa1106:20180805142823p:plain


新しく作成したパッケージバージョンがスクラッチ組織で使用できるようになるまでに、数分かかることがあります。パッケージバージョンが使用可能になると、インストールが開始します。


7. パッケージをインストールしたら、スクラッチ組織を開いて、パッケージを表示します。

$ sfdx force:org:open -u MyScratchOrg


8. [Setup (設定)] から、[ Quick Find (クイック検索)] ボックスに「Installed Packages (インストール済みパッケージ)」と入力し、[Installed Packages (インストール済みパッケージ)] を選択します。
f:id:tyoshikawa1106:20180805142953p:plain


これは未ロックパッケージであるため、スクラッチ組織で直接変更して、更新されたメタデータを取得して、新しいパッケージバージョンを作成できます。ここでは、DreamHouse アプリケーションにはすでに必要な要素がそろっているため、先に進んで、パッケージをリリースします。

パッケージバージョンのリリース

まだ説明していない機能に、パッケージ状態があります。パッケージは、最初に作成したときはベータ状態です。ベータパッケージは本番組織にインストールできません。これは、リリースするパッケージバージョンが本番用に準備完了であることを保証するための予防策です。バージョンの公開準備が完了している場合、状態をリリース済みに設定します。

$ sfdx force:package2:version:update -i 05i_xxx --setasreleased

version:create コマンドの出力から、Package2 バージョン ID (05i で始まる) を取得します。パッケージバージョンの特定の先祖の指定や、パッケージバージョンの昇格のために使用します。


f:id:tyoshikawa1106:20180805143306p:plain


f:id:tyoshikawa1106:20180805143407p:plain


スクラッチ組織のページやクラスにも反映されています。
f:id:tyoshikawa1106:20180805143800p:plain

組織へのパッケージバージョンのインストール

重要な点ですが、最後に、パッケージバージョンを組織にインストールします。ベータパッケージバージョンは、スクラッチ組織、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

f:id:tyoshikawa1106:20180805144336p:plain


これでインストールができました。
f:id:tyoshikawa1106:20180805144603p:plain

f:id:tyoshikawa1106:20180805144652p:plain

f:id:tyoshikawa1106:20180805144736p:plain

f:id:tyoshikawa1106:20180805145048p:plain