ソース コントロール管理を使用してパイプラインを管理する

このページでは、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 リポジトリの同期

ソース コントロール管理機能を使用するために必要な権限を取得するには、プロジェクトに対する次のいずれかの事前定義ロールを付与するよう管理者に依頼してください。

ロールの付与の詳細については、アクセスの管理をご覧ください。

必要な権限は、他の事前定義ロールから取得することもできます。

Git リポジトリを設定する

GitHub で Git リポジトリを作成するには、リポジトリを作成するの手順に従ってください。

GitHub や他のバージョン管理システムの個人アクセス トークンの詳細については、次のページをご覧ください。

Git リポジトリを Cloud Data Fusion に接続する

Cloud Data Fusion では、各名前空間の [ソース コントロール管理] タブで Git リポジトリを構成して接続できます。名前空間を Git リポジトリにリンクするには、次の手順に沿って操作します。

コンソール

  1. Cloud Data Fusion Studio で [メニュー] をクリックします。
  2. [名前空間の管理] をクリックします。
  3. [名前空間の管理] ページで [ソース コントロール管理] タブをクリックします。
  4. [リポジトリをリンクする] をクリックします。
  5. 次の詳細情報を入力します。

    • プロバイダ: GitHubGitLab などの Git サービス プロバイダを選択します。
    • Repository URL: リポジトリにアクセスできる URL を入力します。GitHub の場合、リポジトリ URL は https://github.com/HOST/REPO です。
    • デフォルトのブランチ(省略可): Git の初期ブランチを入力します。このブランチは、GitHub で構成されているデフォルトのブランチと異なる場合があります。 このブランチは、GitHub のデフォルト ブランチに関係なく、パイプラインを同期するために使用されます。
    • パス接頭辞(省略可): Git リポジトリに保存されているパイプライン名の接頭辞を入力します。たとえば、パイプライン名が DataFusionQuickStart で、接頭辞を namespaceName として指定すると、パイプラインは Git リポジトリに namespaceName/DataFusionQuickStart として保存されます。
    • 認証タイプ: Cloud Data Fusion では、認証タイプとしてパーソナライズされたアクセス トークンを使用できます。これは自動的に選択されます。
    • トークン名: トークンに関連付ける名前を入力します。
    • トークン: GitHub リポジトリから提供されたトークンを入力します。
    • (省略可)ユーザー名: トークンのユーザー名またはオーナーを入力します。
  6. [検証] をクリックします。接続が確認されるまで待ちます。

  7. 構成が完了したら、[保存して閉じる] をクリックして構成を確認します。

Git リポジトリを Cloud Data Fusion に接続します。

REST API

  1. 個人用のアクセス トークンを含む Cloud Data Fusion で秘密鍵を作成します。

  2. 次のコマンドを実行します。

    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 の個人用アクセス トークン
  3. 次のコマンドを実行します。

    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 リポジトリに同期するには、次の手順に従います。

コンソール

  1. Cloud Data Fusion Studio で [メニュー] をクリックします。
  2. [名前空間の管理] をクリックします。
  3. [名前空間の管理] ページで [ソース コントロール管理] タブをクリックします。
  4. 同期する Git リポジトリを見つけて、[パイプラインを同期] をクリックします。
  5. [名前空間のパイプラインを] タブをクリックします。
  6. Git リポジトリに push するパイプラインを検索して選択します。

    パイプラインの最新バージョンが Git リポジトリに push または Git リポジトリから pull されると、[Git に接続済み] のステータスが Connected になります。パイプラインが GitHub に push されていない場合は、[Git に接続済み] のステータスの表示が空白(-)になります。

    Git リポジトリと同期されている新しいバージョンのパイプラインをデプロイすると、[Git に接続済み] のステータスが Connected から空白(-)に変わります。

  7. [リポジトリに push] をクリックします。

  8. [commit メッセージ] を入力し、[OK] をクリックします。

    push オペレーションが開始され、選択したパイプラインがリモート リポジトリに push されているというメッセージが表示されます。

パイプラインを Cloud Data Fusion から Git リポジトリに push します。

push オペレーションが正常に完了すると、リモート リポジトリに push されたパイプラインの数を示す成功メッセージが表示されます。

push オペレーションが失敗した場合は、GitHub のパイプラインをチェックして、これが最新バージョンかどうかを確認します。push オペレーションが失敗するたびに、エラー メッセージが表示されます。エラーの詳細を表示するには、エラー メッセージを展開します。

パイプライン設計スタジオから Git リポジトリに個々のパイプラインを push することもできます。

  1. Cloud Data Fusion Studio で [メニュー] をクリックします。
  2. [リスト] をクリックします。
  3. Git リポジトリに push するパイプラインをクリックします。
  4. パイプライン ページで、[アクション] > [リポジトリに push] をクリックします。
  5. [commit メッセージ] を入力し、[OK] をクリックします。

パイプライン設計スタジオからパイプラインを push します。

REST API

  1. 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_1PIPELINE_NAME_2: push されるパイプラインの名前
    • COMMIT_MESSAGE: Git commit の commit メッセージ。

    レスポンスには、push オペレーションの ID が含まれます。次に例を示します。

    RESPONSE
    {
    "id": OPERATION_ID
    }
    
  2. 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 リポジトリから名前空間に複数のパイプラインを同期するには、次の手順に従います。

コンソール

  1. Cloud Data Fusion Studio で [メニュー] をクリックします。
  2. [名前空間の管理] をクリックします。
  3. [名前空間の管理] ページで [ソース コントロール管理] タブをクリックします。
  4. 同期する Git リポジトリを見つけて、[パイプラインを同期] をクリックします。
  5. [リポジトリ パイプライン] タブをクリックします。Git リポジトリに保存されているすべてのパイプラインが表示されます。
  6. Git リポジトリから Cloud Data Fusion 名前空間に pull するパイプラインを検索して選択します。
  7. [リポジトリから pull] をクリックします。

    pull オペレーションが開始され、選択したパイプラインがリモート リポジトリから pull されているというメッセージが表示されます。Cloud Data Fusion は、構成されたパスで JSON ファイルを検索し、パイプラインとして pull して Cloud Data Fusion に デプロイします。

Git リポジトリから Cloud Data Fusion にパイプラインを pull します。

pull オペレーションが正常に完了すると、リモート リポジトリから pull されたパイプラインの数を示す成功メッセージが表示されます。

pull オペレーションが失敗すると、エラー メッセージが表示されます。エラーの詳細を表示するには、エラー メッセージを展開します。

また、パイプライン設計スタジオから、Git リポジトリから個々のパイプラインを名前空間に pull することもできます。

  1. Cloud Data Fusion Studio で [メニュー] をクリックします。
  2. [リスト] をクリックします。
  3. Git リポジトリから pull するパイプラインをクリックします。
  4. パイプライン ページで、[アクション] > [リポジトリから pull] をクリックします。

パイプライン設計スタジオからパイプラインを pull します。

REST API

  1. 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_1PIPELINE_NAME_2: pull されるパイプラインの名前

    レスポンスには、pull オペレーションの ID が含まれます。次に例を示します。

    RESPONSE
    {
    "id": OPERATION_ID
    }
    
  2. 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 リポジトリの構成を名前空間から削除するには、次の手順に従います。

コンソール

  1. Cloud Data Fusion Studio で [メニュー] をクリックします。
  2. [名前空間の管理] をクリックします。
  3. [名前空間の管理] ページで [ソース コントロール管理] タブをクリックします。
  4. 削除する 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 に置き換えます。

次のステップ