タスクとフローによる CumulusCI のカスタマイズ

学習の目的

  • CumulusCI のタスクとフローを利用する。
  • 組み込みフローを変更する方法を説明する。
  • CumulusCI のタスクとフローのメリットについて説明する。

スクラッチ組織へのデータの追加を始める前に、Tasha は CumulusCI でオートメーションの実行とスクラッチ組織の作成に使用されるツール (フローとタスク) のハンズオンを受けています。

タスクとフローの概要

CumulusCI では、タスクは Salesforce 組織または CumulusCI プロジェクトで実行可能な 1 つの個別のジョブです。タスクではメタデータのプッシュ、データの挿入、設定の更新、権限セットの割り当て、パッケージリリースの作成など多くの操作を実行できます。CumulusCI には、一般的な操作を実行するためのタスクの大規模なライブラリが付属しています。

フローは順序付けられた一連のタスクです。CumulusCI では、フローは一連のタスクを結合して、多大な労力を必要とする作業 (組織の設定など) を行います。dev_org は Tasha がすでに使用しているフローです。

メモ

メモ

CumulusCI で Lightning フローを組織にリリースできますが、CumulusCI フローと Lightning フローのオートメーション機能の間に関連はありません。

CumulusCI は強力かつ柔軟であるため、Tasha と同僚はプロジェクトのリポジトリにあるシンプルなテキストファイル cumulusci.yml を編集して新しいタスクとフローの定義や既存のタスクとフローの変更ができます。

cumulusci.yml ファイルにはプロジェクトの CumulusCI の設定が定義されています。ネストされインデントされたセクションのセットに、スクラッチ組織の稼働、使用、探索を可能にするためのコンポーネントが定義されます。Tasha の cumulusci.yml ファイルでこのしくみを詳しく見てみましょう。

タスクの詳細

メモ

メモ

この単元のフローとタスクはデモ用です。これらの例で自分の cumulusci.yml ファイルを更新しないでください。自分の 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_datasetload_datasetgenerate_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_datasetconfig_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.ymlflows セクションの 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 のチームメンバーは時間を節約でき、手作業や設定エラーが発生する可能性がなくなり、チームが作成するすべてのスクラッチ組織はログインするとすぐに使用できるようになります。

リソース