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

このページでは、Git リポジトリを介して Cloud Data Fusion でソース管理を使用してパイプラインを管理する方法について説明します。

ソース コントロール管理について

Cloud Data Fusion には、ETL と ELT 統合のためのパイプラインを視覚的に設計する機能があります。開発と本番環境の間でパイプラインを適切に管理するため、Cloud Data Fusion では、GitHub などのバージョン管理システムを使用してパイプラインのソース コントロール管理を行うことができます。

Cloud Data Fusion のソース コントロール管理を使用すると、次のことができます。

  • 各 Cloud Data Fusion Namespace をバージョン管理システムと統合する。
  • 一元的な 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 サービス プロバイダを選択します。
    • リポジトリの 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 リポジトリを構成したら、Git リポジトリとパイプラインを push および pull して同期できます。

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. [Repository pipelines] タブをクリックします。Git リポジトリに保存されているすべてのパイプラインが表示されます。
  6. Git リポジトリから Cloud Data Fusion Namespace に pull するパイプラインを検索して選択します。
  7. [リポジトリから pull] をクリックします。

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

Git リポジトリから Cloud Data Fusion にパイプラインを 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 に置き換えます。

次のステップ