Professional Data Engineer(Google Cloud) 無料問題 5 / 10 ・ 分野2: データの取り込みと処理
GitHub のリポジトリの DAG を Cloud Build でテストし、Cloud Composer の開発の環境へ同期する CI/CD のパイプラインについて、Test, synchronize, and deploy your DAGs from GitHub のページの例に合うものはどれか。
- 事前のチェックの単体テストが使うパッケージは、Managed Airflow の開発の環境と同じ組になるよう、Cloud Build が環境から読み取る
- 事前のチェックの構成ファイルの手順は、DAG の依存を入れる手順と DAG のテストを実行する手順の2つで、単体テストの依存は DAG の依存と一緒に入れる
- 事前のチェック(presubmit)のトリガーは、イベントを Pull Request にし、ベースのブランチに ^main$ を指定して作る
- 事前のチェックのトリガーの Comment Control を不要にすると、どのプル リクエストでビルドを起こすかをリポジトリの管理者が選ぶ形になる
正解と解説を見る
正解: C
正解の理由
Create the Cloud Build trigger for the presubmit check の節は、事前のチェックのトリガーを GitHub のアプリに基づくトリガーとして作り、名前を test-dags、イベントを Pull Request、ソースのベースのブランチを ^main$(リポジトリの基のブランチの名前に合わせて変える)、構成ファイルを /test-dags.cloudbuild.yaml にすると書く。main ブランチへのプル リクエストでビルドが起き、Cloud Build が DAG の単体テストを動かして DAG が有効かを確かめる。
違う選択肢
「事前のチェックのトリガーの Comment Control を不要にすると、どのプル リクエストでビルドを起こすかをリポジトリの管理者が選ぶ形になる」… Create the Cloud Build trigger for the presubmit check の節は、Comment Control を不要(not required)にすると、どの利用者もビルドを起こすプル リクエストを出せると注意し、大きなリポジトリや信頼できない貢献者のいるリポジトリでは Comment Control を必須にするよう勧める。
「事前のチェックの構成ファイルの手順は、DAG の依存を入れる手順と DAG のテストを実行する手順の2つで、単体テストの依存は DAG の依存と一緒に入れる」… Create Cloud Build YAML configuration for the presubmit check の節は、test-dags.cloudbuild.yaml に、DAG が要る依存を入れる・単体テストが要る依存を入れる・DAG のテストを実行する、の3つの手順を置くと書く。単体テストの依存は requirements-test.txt から別の手順で入れる。
「事前のチェックの単体テストが使うパッケージは、Managed Airflow の開発の環境と同じ組になるよう、Cloud Build が環境から読み取る」… Run a presubmit job の節は、Cloud Build は requirements.txt と requirements-test.txt に書いたパッケージ(公開版の Airflow を含む)で単体テストを動かすので、Managed Airflow の環境のパッケージの組と違うことがあると書き、DAG の開発中はローカルの Airflow の環境を動かすよう勧める。環境から読み取るのではない。
押さえどころ
最初の Cloud Build のジョブが事前のチェックで、DAG の単体テストを実行する。単体テストは _test の接尾辞を付けて DAG と同じリポジトリに置く。同期のジョブが開発の環境へ DAG を送ったあと、開発の環境で DAG を確かめ、期待どおりなら DAG のファイルを本番の環境のバケットの dags/ へ手で上げる。
Professional Data Engineer(Google Cloud)の演習アプリ(無料10問・全問は解錠で)へ