タスクとフローによる CumulusCI のカスタマイズ
学習の目的
- CumulusCI のタスクとフローを利用する。
- 組み込みフローを変更する方法を説明する。
- CumulusCI のタスクとフローのメリットについて説明する。
スクラッチ組織へのデータの追加を始める前に、Tasha は CumulusCI でオートメーションの実行とスクラッチ組織の作成に使用されるツール (フローとタスク) のハンズオンを受けています。
タスクとフローの概要
CumulusCI では、タスクは Salesforce 組織または CumulusCI プロジェクトで実行可能な 1 つの個別のジョブです。タスクではメタデータのプッシュ、データの挿入、設定の更新、権限セットの割り当て、パッケージリリースの作成など多くの操作を実行できます。CumulusCI には、一般的な操作を実行するためのタスクの大規模なライブラリが付属しています。
フローは順序付けられた一連のタスクです。CumulusCI では、フローは一連のタスクを結合して、多大な労力を必要とする作業 (組織の設定など) を行います。dev_org
は Tasha がすでに使用しているフローです。
CumulusCI は強力かつ柔軟であるため、Tasha と同僚はプロジェクトのリポジトリにあるシンプルなテキストファイル cumulusci.yml
を編集して新しいタスクとフローの定義や既存のタスクとフローの変更ができます。
cumulusci.yml
ファイルにはプロジェクトの CumulusCI の設定が定義されています。ネストされインデントされたセクションのセットに、スクラッチ組織の稼働、使用、探索を可能にするためのコンポーネントが定義されます。Tasha の cumulusci.yml
ファイルでこのしくみを詳しく見てみましょう。
タスクの詳細
最初に、ファイルの tasks
部分を見てみましょう。CumulusCI ではすべてのタスクに名前があり、一連のオプションを指定できます。CumulusCI にはプロジェクトでフローの定義に使用されるタスクの大規模なセットが付属します。また、プロジェクトごとに独自のタスクとオプションを設定できます。
Tasha の cumulusci.yml
ファイルでは tasks セクションが次のように開始しています。
tasks: robot: options: suites: robot/Food-Bank/tests options: outputdir: robot/Food-Bank/results
CumulusCI ではプロジェクトごとにこのシンプルなカスタマイズが作成されます。組み込みの robot
タスクはとても単純なブラウザーオートメーションテストを実行します。また、このプロジェクトに適用されるパスでカスタマイズされています。Tasha がプロジェクトの他のタスクのオプションを変更する必要がある場合、このようなエントリを操作します。いずれは新規タスクを作成し、他の方法を定義してプロジェクトの作業を自動化することもあるでしょう!
CumulusCI にはフローの作成に使用される多くのタスクが付属します。ここにはそのすべては表示されません。この cumulusci.yml
ファイルの tasks
部分は Tasha のカスタマイズ用ですが、cci task list
コマンドを実行すれば、使用可能なすべてのタスクのリストを表示できます。
プロジェクトで使用可能な多くのタスクのリストで、Tasha はヘッダー [Data Operations (データ操作] の下に extract_dataset
、load_dataset
、generate_dataset_mapping
というタスクのセットがあることに気付きました。これはまさにアプリケーションにデータを追加するために必要な機能です! しかしデータセットの作成を開始する前に、Tasha は Salesforce 組織の作成に使用するフローに新しいタスクを追加する方法を調べる必要があります。
CumulusCI フローの詳細
タスクと同様、CumulusCI には多種多様なフローが付属しています。フローとは特定の方法で Salesforce 組織を作成する一連のタスク (と他のフロー) です。言い換えれば、フローは組織を作成するためのレシピです。フローもタスクのようにプロジェクトのニーズに合わせて変更できます。Tasha はタスクの追加や削除、既存のタスクの変更を行うことができます。
Tasha の cumulusci.yml
にはまだフローがありません。これまで Tasha とチームはプロジェクトのフローをカスタマイズしていないからです。Tasha は以前の CumulusCI 作業のいくつかですでに dev_org
フローを使用したことがあり、このフローの「レシピ」を変更してこれから作成するデータセットを追加する必要があると考えています。
Tasha は cci flow info dev_org
コマンドを入力して dev_org
フローのしくみを調査し始めます。このコマンドでは dev_org
フローを構成するすべてのタスクと他のフローのリストが表示されます。Tasha は config_dev
というタスクに注目します。このフローは開発用途向けにスクラッチ組織を設定します。
Tasha はタスク load_dataset
を config_dev
に追加しようと考えており、順番に並んだ操作のどこにタスクを入れるかを確認する必要があります。カスタマイズする特定の CumulusCI フローに含まれているステップを参照するため、cci flow info config_dev
コマンドを使用して config_dev
フローの手順を表示します。次のように表示されます。
Description: Configure an org for use as a dev org after package metadata is deployed 1) task: deploy_post [from current folder] 2) task: update_admin_profile
config_dev
フローは 2 ステップで開始します。1 つ目の deploy_post
は、unpackaged/post
ディレクトリにあるパッケージ化されていないメタデータをリリースします (Tasha のプロジェクトにはまだありません)。2 つ目の update_admin_profile
は、プロジェクトのオブジェクトと項目すべてに対するシステム管理者プロファイルアクセス権を自動的に付与します。
Tasha は load_dataset
タスク用の 3 つ目のステップを追加してプロジェクトの config_dev
フローをカスタマイズします。このステップを cumulusci.yml
の flows
セクションの config_dev
の下に追加すると、CumulusCI に「config_dev
がスクラッチ組織の作成に使用されるたびに、最初の 2 タスクを実行した後、load_dataset
タスクを実行する」と指示されます。cumulusci.yml
ファイル内は次のようになります。
flows: config_dev: steps: 3: task: load_dataset
cumulusci.yml
はプロジェクトのリポジトリに含まれているため、Tasha が加えた変更は Git と機能ブランチにコミットされます。レビュー担当者がその変更をテストしてマスターにマージすると、新しいステップがプロジェクトのオートメーションに追加されて誰でも使用できるようになります。
まとめ: タスクとフローの価値
他のフローとタスクを作成してフローをカスタマイズすると、Tasha とそのチームはプロジェクト固有のニーズに合わせて思いどおりに CumulusCI オートメーションを調整できます。組み込みの config_dev
および config_qa
フローをカスタマイズすることで、Food Bank プロジェクト用に作成されたすべての開発組織と QA 組織にすべてのメタデータが追加されるだけでなく、他の設定手順も実行できます。たとえば、スクラッチ組織でアプリケーションのストーリーを伝えられるように必要なデータセットを読み込むことができます。カスタマイズにより、Tasha のチームメンバーは時間を節約でき、手作業や設定エラーが発生する可能性がなくなり、チームが作成するすべてのスクラッチ組織はログインするとすぐに使用できるようになります。