このページでは、Git リポジトリを介して Cloud Data Fusion でソース管理を使用してパイプラインを管理する方法について説明します。
ソース コントロール管理について
Cloud Data Fusion には、ETL と ELT 統合のためのパイプラインを視覚的に設計する機能があります。開発と本番環境の間のパイプラインを適切に管理するため、Cloud Data Fusion では、GitHub などのバージョン管理システムを使用してパイプラインのソース コントロール管理を行うことができます。
Cloud Data Fusion のソース コントロール管理では次のことができます。
- Cloud Data Fusion の各名前空間をバージョン管理システムと統合します。
- 中央の Git リポジトリでパイプラインを管理します。
- パイプラインの変更を確認して監査する。
- パイプラインの変更を元に戻す。
- 確実に集中管理しながらチームと効果的に連携する。
始める前に
- ソース コントロール管理では、GitHub、Bitbucket Server、Bitbucket Cloud、Gitlab のリポジトリとの統合がサポートされています。
- GitHub OAuth はサポートされていません。
- ソース コントロール管理はバッチ パイプラインのみをサポートします。
- ソース コントロール管理は、push オペレーションと pull オペレーションのパイプライン設計 JSON のみをサポートしています。 実行構成はサポートされていません。
- リンクされたリポジトリのサイズの上限は 5 GB です。
必要なロールと権限
Cloud Data Fusion のソース コントロール管理は、次の 2 つの主要なオペレーションで構成されます。
- ソース コントロール リポジトリの構成
- push オペレーションと pull オペレーションを使用したパイプラインと Git リポジトリの同期
ソース コントロール管理機能を使用するために必要な権限を取得するには、プロジェクトに対する次のいずれかの事前定義ロールを付与するよう管理者に依頼してください。
ソース管理リポジトリを構成します。
- Cloud Data Fusion オペレータ(
roles/datafusion.operator
) - Cloud Data Fusion 編集者(
roles/datafusion.editor
) - Cloud Data Fusion 管理者(
roles/datafusion.admin
)
- Cloud Data Fusion オペレータ(
名前空間から push または pull オペレーションを使用してパイプラインを同期します。
- Cloud Data Fusion オペレータ(
roles/datafusion.operator
) - Cloud Data Fusion デベロッパー(
roles/datafusion.developer
) - Cloud Data Fusion 編集者(
roles/datafusion.editor
) - Cloud Data Fusion 管理者(
roles/datafusion.admin
)
- Cloud Data Fusion オペレータ(
ロールの付与の詳細については、アクセスの管理をご覧ください。
必要な権限は、他の事前定義ロールから取得することもできます。
Git リポジトリを設定する
GitHub で Git リポジトリを作成するには、リポジトリを作成するの手順に従ってください。
GitHub や他のバージョン管理システムの個人アクセス トークンの詳細については、次のページをご覧ください。
GitHub: 個人用アクセス トークンの作成ときめ細かい個人用アクセス トークンの作成
Git リポジトリを Cloud Data Fusion に接続する
Cloud Data Fusion では、各名前空間の [ソース コントロール管理] タブで Git リポジトリを構成して接続できます。名前空間を Git リポジトリにリンクするには、次の手順に沿って操作します。
コンソール
- Cloud Data Fusion Studio で [メニュー] をクリックします。
- [名前空間の管理] をクリックします。
- [名前空間の管理] ページで [ソース コントロール管理] タブをクリックします。
- [リポジトリをリンクする] をクリックします。
次の詳細情報を入力します。
- プロバイダ: GitHub や GitLab などの Git サービス プロバイダを選択します。
- Repository URL: リポジトリにアクセスできる URL を入力します。GitHub の場合、リポジトリ URL は
https://github.com/HOST/REPO
です。 - デフォルトのブランチ(省略可): Git の初期ブランチを入力します。このブランチは、GitHub で構成されているデフォルトのブランチと異なる場合があります。 このブランチは、GitHub のデフォルト ブランチに関係なく、パイプラインを同期するために使用されます。
- パス接頭辞(省略可): Git リポジトリに保存されているパイプライン名の接頭辞を入力します。たとえば、パイプライン名が
DataFusionQuickStart
で、接頭辞をnamespaceName
として指定すると、パイプラインは Git リポジトリにnamespaceName/DataFusionQuickStart
として保存されます。 - 認証タイプ: Cloud Data Fusion では、認証タイプとしてパーソナライズされたアクセス トークンを使用できます。これは自動的に選択されます。
- トークン名: トークンに関連付ける名前を入力します。
- トークン: GitHub リポジトリから提供されたトークンを入力します。
- (省略可)ユーザー名: トークンのユーザー名またはオーナーを入力します。
[検証] をクリックします。接続が確認されるまで待ちます。
構成が完了したら、[保存して閉じる] をクリックして構成を確認します。
REST API
個人用のアクセス トークンを含む Cloud Data Fusion で秘密鍵を作成します。
次のコマンドを実行します。
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" ${CDAP_ENDPOINT}/v3/namespaces/NAMESPACE_ID/securekeys/PASSWORD_SECRET_KEY -X PUT -d '{ "description": "Example Secure Key","data": "PERSONAL_ACCESS_TOKEN"}'
次のように置き換えます。
NAMESPACE_ID
: 名前空間の ID。PASSWORD_SECRET_KEY
: 個人用アクセス トークンを含む秘密鍵の名前。PERSONAL_ACCESS_TOKEN
: GitHub の個人用アクセス トークン
次のコマンドを実行します。
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" ${CDAP_ENDPOINT}/v3/namespaces/NAMESPACE_ID/repository -X PUT -d '{"test": "TEST_ONLY", "config": {"provider": "PROVIDER_TYPE", "link": "REPO_URL", "defaultBranch": "DEFAULT_BRANCH", "pathPrefix": "PATH_TO_DIRECTORY", "auth": {"type": "AUTH_TYPE", "patConfig": {"passwordName": "PASSWORD_SECRET_KEY", "username": "USER_NAME"}}}}'
次のように置き換えます。
NAMESPACE_ID
: 名前空間の ID。TEST_ONLY
: 構成の検証のみを行い、構成を追加しない場合はtrue
に設定します。PROVIDER_TYPE
: Git プロバイダ名(つまりGITHUB
)。REPO_URL
: リンクされるリポジトリの URL。https
URl を使用します(例:https://github.com/user/repo.git
)。DEFAULT_BRANCH
: push オペレーションと pull オペレーションに使用されるブランチ。省略した場合は、リポジトリでデフォルトで構成されているブランチ(メインブランチなど)が使用されます。PATH_TO_DIRECTORY
: 構成ファイルが保存されているリポジトリ内のディレクトリへのパス。AUTH_TYPE
: 認証タイプ。PAT
のみがサポートされています。GitHub のきめ細かい個人用アクセス トークンをご覧ください。PASSWORD_SECRET_KEY
: 認証タイプPAT
の個人用アクセス トークンを含む秘密鍵の名前。USER_NAME
: 認証タイプPAT
の場合は、この値を省略できます。
Cloud Data Fusion パイプラインをリモート リポジトリと同期する
名前空間を使用して Git リポジトリを構成したら、パイプラインを push および pull し、Git リポジトリと同期できます。
Cloud Data Fusion から Git リポジトリにパイプラインを push する
デプロイされた複数のパイプラインを名前空間から Git リポジトリに同期するには、次の手順に従います。
コンソール
- Cloud Data Fusion Studio で [メニュー] をクリックします。
- [名前空間の管理] をクリックします。
- [名前空間の管理] ページで [ソース コントロール管理] タブをクリックします。
- 同期する Git リポジトリを見つけて、[パイプラインを同期] をクリックします。
- [名前空間のパイプラインを] タブをクリックします。
Git リポジトリに push するパイプラインを検索して選択します。
パイプラインの最新バージョンが Git リポジトリに push または Git リポジトリから pull されると、[Git に接続済み] のステータスが
Connected
になります。パイプラインが GitHub に push されていない場合は、[Git に接続済み] のステータスの表示が空白(-
)になります。Git リポジトリと同期されている新しいバージョンのパイプラインをデプロイすると、[Git に接続済み] のステータスが
Connected
から空白(-
)に変わります。[リポジトリに push] をクリックします。
[commit メッセージ] を入力し、[OK] をクリックします。
push オペレーションが開始され、選択したパイプラインがリモート リポジトリに push されているというメッセージが表示されます。
push オペレーションが正常に完了すると、リモート リポジトリに push されたパイプラインの数を示す成功メッセージが表示されます。
push オペレーションが失敗した場合は、GitHub のパイプラインをチェックして、これが最新バージョンかどうかを確認します。push オペレーションが失敗するたびに、エラー メッセージが表示されます。エラーの詳細を表示するには、エラー メッセージを展開します。
パイプライン設計スタジオから Git リポジトリに個々のパイプラインを push することもできます。
- Cloud Data Fusion Studio で [メニュー] をクリックします。
- [リスト] をクリックします。
- Git リポジトリに push するパイプラインをクリックします。
- パイプライン ページで、[アクション] > [リポジトリに push] をクリックします。
- [commit メッセージ] を入力し、[OK] をクリックします。
REST API
Cloud Data Fusion から Git リポジトリに一連のパイプラインを push します。
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" ${CDAP_ENDPOINT}/v3/namespaces/NAMESPACE_ID/repository/apps/push -X POST -d '{"apps": ["PIPELINE_NAME_1", "PIPELINE_NAME_2"]}, "commitMessage": "COMMIT_MESSAGE"'
次のように置き換えます。
NAMESPACE_ID
: 名前空間の ID。PIPELINE_NAME_1
、PIPELINE_NAME_2
: push されるパイプラインの名前COMMIT_MESSAGE
: Git commit の commit メッセージ。
レスポンスには、push オペレーションの ID が含まれます。次に例を示します。
RESPONSE { "id": OPERATION_ID }
push オペレーションのステータスをポーリングするには、次のコマンドを実行します。
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" ${CDAP_ENDPOINT}/v3/namespaces/NAMESPACE_ID/operations/OPERATION_ID
次のように置き換えます。
NAMESPACE_ID
: 名前空間の ID。OPERATION_ID
: push オペレーションから受信したオペレーション ID。
レスポンスには、push オペレーションのステータスが含まれます。次に例を示します。
RESPONSE { "id": OPERATION_ID "done": True/False "status": STARTING/RUNNING/SUCCEEDED/FAILED "error": {"message": ERROR_MESSAGE, "details":[{"resourceUri": RESOURCE, "message": ERROR_MESSAGE}]} }
push オペレーションが完了したかどうかを確認するには、レスポンスの
done
プロパティを確認します。オペレーションが失敗した場合は、error
プロパティの詳細を確認してください。
Git リポジトリから Cloud Data Fusion にパイプラインを pull します。
Git リポジトリから名前空間に複数のパイプラインを同期するには、次の手順に従います。
コンソール
- Cloud Data Fusion Studio で [メニュー] をクリックします。
- [名前空間の管理] をクリックします。
- [名前空間の管理] ページで [ソース コントロール管理] タブをクリックします。
- 同期する Git リポジトリを見つけて、[パイプラインを同期] をクリックします。
- [リポジトリ パイプライン] タブをクリックします。Git リポジトリに保存されているすべてのパイプラインが表示されます。
- Git リポジトリから Cloud Data Fusion 名前空間に pull するパイプラインを検索して選択します。
[リポジトリから pull] をクリックします。
pull オペレーションが開始され、選択したパイプラインがリモート リポジトリから pull されているというメッセージが表示されます。Cloud Data Fusion は、構成されたパスで JSON ファイルを検索し、パイプラインとして pull して Cloud Data Fusion に デプロイします。
pull オペレーションが正常に完了すると、リモート リポジトリから pull されたパイプラインの数を示す成功メッセージが表示されます。
pull オペレーションが失敗すると、エラー メッセージが表示されます。エラーの詳細を表示するには、エラー メッセージを展開します。
また、パイプライン設計スタジオから、Git リポジトリから個々のパイプラインを名前空間に pull することもできます。
- Cloud Data Fusion Studio で [メニュー] をクリックします。
- [リスト] をクリックします。
- Git リポジトリから pull するパイプラインをクリックします。
- パイプライン ページで、[アクション] > [リポジトリから pull] をクリックします。
REST API
Git リポジトリから Cloud Data Fusion に一連のパイプラインを pull します。
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" ${CDAP_ENDPOINT}/v3/namespaces/NAMESPACE_ID/repository/apps/pull -X POST -d '{"apps": ["PIPELINE_NAME_1", "PIPELINE_NAME_2"]}'
次のように置き換えます。
NAMESPACE_ID
: 名前空間の ID。PIPELINE_NAME_1
、PIPELINE_NAME_2
: pull されるパイプラインの名前
レスポンスには、pull オペレーションの ID が含まれます。次に例を示します。
RESPONSE { "id": OPERATION_ID }
pull オペレーションのステータスをポーリングするには、次のコマンドを実行します。
curl -H "Authorization: Bearer $(gcloud auth print-access-token)" -H "Content-Type: application/json" ${CDAP_ENDPOINT}/v3/namespaces/NAMESPACE_ID/operations/OPERATION_ID
次のように置き換えます。
NAMESPACE_ID
: 名前空間の ID。OPERATION_ID
: pull オペレーションから受信したオペレーション ID。
レスポンスには、pull オペレーションのステータスが含まれます。次に例を示します。
RESPONSE { "id": OPERATION_ID "done": True/False "status": STARTING/RUNNING/SUCCEEDED/FAILED "error": {"message": ERROR_MESSAGE, "details":[{"resourceUri": RESOURCE, "message": ERROR_MESSAGE}]} }
pull オペレーションが完了したかどうかを確認するには、レスポンスの
done
プロパティを確認します。オペレーションが失敗した場合は、error
プロパティの詳細を確認してください。
Git リポジトリの構成を削除する
Git リポジトリの構成を名前空間から削除するには、次の手順に従います。
コンソール
- Cloud Data Fusion Studio で [メニュー] をクリックします。
- [名前空間の管理] をクリックします。
- [名前空間の管理] ページで [ソース コントロール管理] タブをクリックします。
- 削除する Git 構成の > [削除] をクリックします。
REST API
Git リポジトリの構成を削除します。
curl -H "Authorization: Bearer $(gcloud auth print-access-token)"
${CDAP_ENDPOINT}/v3/namespaces/NAMESPACE_ID/repository -X DELETE
NAMESPACE_ID は、オペレーションの ID に置き換えます。
次のステップ
- GitHub リポジトリを使用したパイプラインの管理について詳細を確認する。