本記事は、トレイル「Build Applications with CumulusCI」の覚え書き、気づきの整理です。
Salesforce用のアプリケーションを構築して自動化し、オープンソースのアプリケーションを共同開発する話。6モジュール分です。
本当は1モジュールずつ記事にしようかと思いましたが、1箇所にまとめた方が良い気がしたので。
CumulusCI Basics
Learn About Salesforce.org's App Development Model
- CumulusCI:Salesforceプラットフォーム上にアプリケーションを構築するための汎用ツール。Salesforce製品を使わないプロジェクトだけでなく、オープンソースではないプロジェクトでも誰でも使うことができるとのこと。
- salesforce の構成要素を(デザートの)サンデーで例えてる。
Use the "Sundae" Model to Build a Food Bank App
- 「CumulusCI:従業員、パートナー、コミュニティの共同編集者が使用でき、Salesforce関連のプロジェクトで作業しているすべての人がSalesforceサンデーレシピを作成できるようにする。
その後、誰でもそのレシピを使用して、ベースとなるレシピとまったく同じように見える新しいSalesforce組織を作成する。」 → Chef みたいなプロビジョニングツール? - CumulusCIの主要コンセプト:共有、設定性とカスタマイズ性、ポータブルな自動化
- CumulusCI と Github のコラボ? これにより、salesforce 組織そのものが真の情報源ではなくなる(良く言われているアレ)→GitHubリポジトリがプロジェクトの礎
CumulusCI Setup
Review Base Requirements and Install Visual Studio Code
Set Up Your Salesforce Environment
- Devhub組織を用意する話
- DevHub を有効化していないのにチャレンジが通ったのはなんでだろう?(実は自分の見間違い?)
Install CumulusCI
- python3 がインストール前提条件(windows はそれ以外になんか入れてましたが)
- CumulusCI のセットアップに必要な他のツール:sfdx (Python3 でないんかーーい
Set Up GitHub and Connect to CumulusCI
Community Project Development with CumulusCI
Set Up the Project
Make and Capture Customizations to Your App
- Googleサイト翻訳が効かないページ
- cci scracth組織作成コマンド cci flow run dev_org --org dev
- スクラッチ組織をブラウザで開くコマンド cci org browser dev
- スクラッチ組織の変更一覧を表示するコマンド cci task run list_changes --org dev
- プロファイル除外版 cci task run list_changes --org dev -o exclude "Profile:" 管理パッケージにはプロファイルは除外するのがベスト。
- スクラッチ組織の変更を取得するコマンド cci task run retrieve_changes --org dev -o exclude "Profile:"
Make Customizations Available to Your Project Team
- 機能ブランチの変更内容に基づいてスクラッチ組織を構築するコマンド cci flow run qa_org --org qa
- branch の変更が妥当なものならmaster にマージ(Git を使った開発サイクルのいつもの
CumulusCI コマンド整理
コマンド | 処理概要 |
---|---|
cci flow run dev_org --org dev | 依存関係のあるパッケージのインストール&ローカルにあるメタデータをデプロイしつつスクラッチ組織の作成 --org dev は組織のエイリアス |
cci org browser dev | スクラッチ組織をブラウザで開く |
cci task run list_changes --org dev | スクラッチ組織の変更一覧を表示する |
cci task run list_changes --org dev -o exclude "Profile:" | スクラッチ組織の変更一覧を表示する(プロファイル除外) |
cci task run retrieve_changes --org dev -o exclude "Profile:" | スクラッチ組織の変更を取得する(プロファイル除外) |
cci org scratch_delete dev | スクラッチ組織を削除する |
Data Management with CumulusCI
Build a Demonstration Dataset
- ストーリーのあるデータを用意する
- 開発者と管理者は、ユーザーの動機とユースケースを理解する
- テスターは、評価している機能がどのように使用されるかを理解する
- 思慮深いデータセットを構築する = アプリケーションのストーリーを語る
Learn About Tasks and Flows to Customize CumulusCI
- サイト翻訳できない単元
- タスク:Salesforce の組織や CumulusCI プロジェクトで実行できる単一の個別のジョブ
- フローとは、順序立てられたタスクのシーケンス
- config_dev スクラッチ組織を設定。コマンドは設定ファイルで挙動の編集が可能?
- → 組み込み済みのフローを変更するには、cumulusci.yml を編集する
Add Demonstration Data to Your Org
- CumulusCIに必要なデータを教えるマッピングファイルを作成 cci task run generate_dataset_mapping --org dev
- マッピングファイルを使用して作成したデータをキャプチャする cci task run extract_dataset --org dev
- フローに含まれる(別の)フローとタスクを確認する cci flow info qa_org (qa_org :フロー名)
- 組み込み済みのフローにカスタマイズした処理を追加するには、cumulusci.yml にカスタマイズした処理を記載する
CumulusCI for Managed Packages
Convert to a Managed Package
- 管理パッケージの利点:
Create a Packaging Org
- パッケージ組織をdeveloper edition で用意して、パッケージを作成。
- cumulusci.yml にパッケージ名を反映できる模様?
- GitHub Desktop でブランチ作成、commit、push、pull Request の作成の流れ
- cci org connect packaging 組織に接続。packaging は組織名?
- cci org browser packaging salesforce組織をブラウザで開く。packaging は組織名
Get Ready to Release Your Managed Package
- 最終的な製品リリースのアップロードは、慎重に行う必要があり。
コンポーネントに加えることができない特定の変更があるためです。 - ベータ版:Developer Editionの組織とサンドボックスにのみインストールできる。
- メリット:パッケージの変更を永続的にロックすることなく、パッケージのインストールをテストできる。
- デメリット:アップグレードすることはできない。
- パッケージを組織にデプロイするフロー: cci flow run ci_master --org packaging packaging は組織名
- 組織のDefault Language が違うとデプロイが失敗する(オブジェクトの複数形名称の都合)、
- メタデータに日本語名があるとデプロイが失敗する。(日本語名そのものとエンコードした文字列を比較している模様)
該当のレイアウトファイルのファイル名を修正しても、レイアウトファイルを削除しても同じエラーが出続ける。deploy先に中途半端な状態で登録されている可能性があるので、deploy先salesforceから削除する
- ベータ版のリリース cci flow run release_beta --org packaging packaging は組織名
- ベータ版がインストールされたスクラッチ組織の作成 cci flow run ci_beta --org beta
- 途中でInstalledPackage version number does not exist". が出てくるが、Trailhead 曰く、無視できるらしい。謎だけど
- git にpush されている模様
- 最終版のリリース フローの実行 cci flow run release_production --org packaging
- git にpush される
- パッケージのインストール cci flow run install_prod --org playground
- 最終版のリリースから少し時間を置く必要があり?(直後は失敗したが、時間を置いて再実行したら問題なし)
CumulusCI for Post-Install Customizations
Create an Implementation Project
- cci service connect devhub --project スクラッチ組織を作成するときのインプット:devhubとして取り扱う。
- 依存関係に NPSP のGithub URLを指定すると、NPSP管理パッケージがインストールされる? もしくはdependenciesフローに追記か?
下記の dev hub 認証のエラーが出たら、CumulusCI Setup → Set Up Your Salesforce Environment のチャレンジをもう一回。 ローカルの sfdx に エイリアス名:CCIDevHub がないことが要因
で、上記がクリアされると、次はこのエラー。GitHub から取得しているはずなのに、該当のファイルを push してもエラー内容が変わらないという謎。 しょうがないので、プロジェクト(Food-Bank-Implementation)のカスタマイズをプロジェクト(Food-Bank-)そのままファイルコピー。Cumulusci.yml からGitHub のリポジトリURL:Food-Bankを削除。 やたら時間がかかる。
Add Customizations Post Installation
- スクラッチ組織にカスタム項目を追加してローカルのプロジェクトに反映する話(難しい話ではない)
Install Your Customized Project in Production
- カスタマイズしたプロジェクtp(metadata) を本番組織にデプロイ。
- この問題はハンズオンチャレンジ。接続する組織が Trailheadアカウントに紐づいていればOKな気がする。本文の内容そのまま実行。NPSP パッケージが入っているので時間がかかる模様。(事前にチャレンジのところでも注意書きが記載されている)
- NPSPパッケージと自作の管理パッケージをインストールできればOK。CumulusCI 経由かどうかは見ていない。
これまでの軌跡を記録はしてみたが、いろいろいらんところでつまづいた記憶しかなく2時まで原因調査というのが3日続いたなー (泣く、未だに yml のエラーはわからない。多言語対応はまだ先かもねー。
(追記) twitterで上記のスクリーンショットを載せたら、Trailblazer Community に投稿することになりました。バグ?が解決されることを願うばかり https://success.salesforce.com/_ui/core/chatter/groups/GroupProfilePage?g=0F9300000009M9Z