tubasa_gekituiのブログ

salesforce社の無料学習サイト「Trailhead」の覚え書きとか日記とか

Trailheadトレイル「Build Applications with CumulusCI」覚え書き

本記事は、トレイル「Build Applications with CumulusCI」の覚え書き、気づきの整理です。

trailhead.salesforce.com

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

  • VSCode をインストールする話。
  • 開発要件がDevHub組織、バージョン管理ツール、sfdx CLI と書かれている。

Set Up Your Salesforce Environment

  • Devhub組織を用意する話
  • DevHub を有効化していないのにチャレンジが通ったのはなんでだろう?(実は自分の見間違い?)

Install CumulusCI

  • python3 がインストール前提条件(windows はそれ以外になんか入れてましたが)
  • CumulusCI のセットアップに必要な他のツール:sfdx (Python3 でないんかーーい

Set Up GitHub and Connect to CumulusCI

  • Github のアカウントを作成(作成ずみなら不要作業)、CumulusCI を接続するだけ。
  • GitHub Desktop なんてアプリあったんですね・・・。

Community Project Development with CumulusCI

Set Up the Project

  • 前のモジュールからの続き:Git リポジトリ作成
  • CumulusCI プロジェクト作成コマンドは cci project init
    実行した結果、ターミナル出力 のキャプ cci project init 実行結果

Make and Capture Customizations to Your App

  • Googleサイト翻訳が効かないページ
  • cci scracth組織作成コマンド cci flow run dev_org --org dev
    • cci flow run でフロー実行、dev_org がフロー名。 dev_org はスクラッチ組織を作成、依存関係のあるパッケージのインストール、アプリケーションのデプロイ etc を実施してくれる。 最後の --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 を使った開発サイクルのいつもの
    • プルリク承認→ branch 削除 スクラッチ組織も削除する 削除コマンド cci org scratch_delete dev (dev はスクラッチ組織名

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

  • 管理パッケージの利点:
    • コンポーネントの分離、アップグレード、
    • 管理のルール:リリースされたパッケージで変更できるものと変更できないものに制約を課す
    • 管理パッケージ内のメタデータは、組織内のエンドユーザーが編集することはできない。⇒代わりにプロジェクトのGitHubリポジトリ内のパッケージに変更を加える

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から削除する
      f:id:tubasa_gekitui:20200401225758p:plain
      日本語があるとデプロイ失敗へ
  • ベータ版のリリース 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
    • 最終版のリリースから少し時間を置く必要があり?(直後は失敗したが、時間を置いて再実行したら問題なし)
      f:id:tubasa_gekitui:20200402023115p:plain
      パッケージのインストール失敗

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 がないことが要因

    f:id:tubasa_gekitui:20200402214821p:plain
    devhub エラー

  • で、上記がクリアされると、次はこのエラー。GitHub から取得しているはずなのに、該当のファイルを push してもエラー内容が変わらないという謎。

    f:id:tubasa_gekitui:20200402221547p:plain
    前モジュールで作成したcumulusci.yml に関するエラー
    しょうがないので、プロジェクト(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