tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:CumulusCI を使用した管理パッケージの作成を試してみました

前回の記事の続き。AppExchange開発するわけではないではないので省略しようかなと思っていたパッケージの作成ですが、どっちにしてもTrailheadは終わらせるのでブログにまとめることにしました。

Developer Edtion組織の作成

前回の記事ではTrailheadハンズオン組織をつかっていろいろ試しましたが、今回はDeveloper Edtionを新しく用意してそちらで進めます。これについてはTrailheadの中でもハンズオン組織はパッケージ作成の役割ではないのでDeveloper Edtion組織でやりましょうと記載がありました。

Developer Edtion組織の認証

『sf org login web』コマンドをつかって認証します。Salesforceプロジェクトは前回作成したプロジェクトを使います。

$ sf org login web -b chrome


ALIASの設定は次のコマンド。

$ sf alias set cumuluscipkg=<user id>


デプロイコマンドで作成したDeveloper Edtion組織にソースコードをデプロイします。前回やった内容でGitHubリポジトリにアップできていれば作成していたカスタムオブジェクトとかをそのままDerveloper Edtion組織に適用できます。

$ sf deploy start -o cumuluscipkg


一応やっておくけどTrailheadの手順では使わないかも。あと権限設定の工程を入れていないのでアプリケーションランチャーとかでは参照できない状態です。

パッケージの作成

設定メニューのパッケージマネージャのページにアクセスします。


新規パッケージを作成します。


名前空間設定でユニークとなる名前空間を指定します。


名前空間を決めたら指定のパッケージを選択します。


これで管理パッケージ作成の準備ができました。

cumulusci.yml ファイルのカスタマイズ

プロジェクト名をパッケージマネージャで設定したパッケージ名に変更します。


namespaceを追加します。先程指定した名前空間で上書きします。

GitHubに変更を反映

ブランチを作成します。


cumulusci.ymlの変更をコミットします。


publish branch→プルリクエスト→マージと操作します。


これでGitHubに反映完了。

組織を CumulusCI に接続する

パッケージ作成用のDeveloper Edtion組織を次のコマンドで接続します。

$ cci org connect packaging


次のコマンドで接続状況を一覧化できます。

$ cci org list


次のコマンドで接続したパッケージ作成組織をブラウザで開けます。

$ cci org browser packaging

最初のベータバージョンをアップロードする

ターミナルウィンドウで、次のコマンドを入力。

$ cci flow run ci_master --org packaging 


コマンド実行後の処理が終わるとパッケージの中にソースコード一式が格納されています。


格納を確認できたら次のコマンドでベータバージョンにします。

$ cci flow run release_beta --org packaging 



ベータ版のテストは次のコマンドです。(この辺はそれっぽく動いた感じだった。)

$ cci flow run ci_beta --org beta


テストが問題なければ次のコマンドで不要なスクラッチ組織を削除。

$ cci org scratch_delete beta

パッケージ最終版のアップロード

$ cci flow run release_production --org packaging


このあたりの操作でターミナル上にエラーメッセージがでました。こういうのです。

Error: 'github' service configuration could not be found. Maybe you need to run: cci service connect github


一応リリース済みバージョンにはなっていました。


自動でリリースノートが生成されるとの記載がありましたが、これはうまくいきませんでした。上記のエラーのせいだと思います。


Trailheadの残りの工程としては作成したパッケージのインストールですがこれも面倒なので省略。


・・・しようと思ったのですが、インストールコマンドの実行履歴がチャレンジで問われました。次のコマンドでSandbox組織にインストールします。なお、Sandbox組織については、スクラッチ組織がSandbox組織扱いで利用可能です。

$ cci org connect sandbox --sandbox
$ cci flow run install_prod --org sandbox
$ cci org browser sandbox


このあたりでいろいろごちゃっとさせちゃいました。

まとめ

まずSandboxへのインストールは不要でした。Trailheadにもそのように書いてありました。
パッケージのリリース済みバージョンの作成までできていれば、Trailheadの最後のチャレンジをクリアする条件は残り2つ。

  • Developer Edtion組織またはTrailheadハンズオン組織を用意。
  • 用意した組織をTrailheadチャレンジの組織として紐付け。
  • この組織に作成した管理パッケージをインストール。
  • この組織をCumulusCIと連携。

CumulusCIと連携については次のコマンドで連携できます。(実行するとログインページが表示されて認証できる。)

$ cci org connect org --default


だいぶ強引な感じで突破しましたが、パッケージインストールした記録と認証の記録があればTrailheadチャレンジとしては一応クリア扱いになりました。(CumulusCIけっこう難しい感じ。)