すべてのプロダクト
Search
ドキュメントセンター

DataWorks:Git コード同期とマージ

最終更新日:May 08, 2026

DataWorks は Git と深く統合され、新しいデータ開発モデルを実現します。コード同期およびマージ機能により、DataWorks プラットフォームとご利用の Git リポジトリが接続されます。

重要

この機能は現在パブリックベータ版であり、DataWorks Enterprise Edition のみで利用可能です。

概要

DataWorks と Git の統合には、ワークスペース内でのコード管理およびワークスペース間でのコードマージを可能にする次の 2 つのワークフローが含まれます。

  • DataWorks から Git への同期:DataWorks でコードを保存または公開すると、変更内容が自動的に Git リポジトリ内の保護されたブランチにコミットされます。この処理は専用の Git アカウントおよびネットワークアクセス可能なサーバーレスリソースグループによって実行されます。

  • Git から DataWorks へのマージ:ご利用の Git リポジトリの main ブランチまたは独立したブランチからコードの変更を DataWorks にマージします。

DataWorks は、手動での変更を防止するため保護ブランチルールを使用し、ご利用の Git リポジトリ内に次の 3 つのブランチを自動的に作成・管理します。

  • dataworks_${region}_${projectId}_save:DataWorks での保存操作後のコードに対応します。

  • dataworks_${region}_${projectId}_release_dev:開発環境に正常に公開されたコードに対応します。

  • dataworks_${region}_${projectId}_release_prod:本番環境に正常に公開されたコードに対応します。

構成と初期化

ステップ 1:リソースとネットワークの準備

コード同期タスクはサーバーレスリソースグループ上で実行され、ご利用の Git リポジトリおよび OSS へのネットワークアクセスが必要です。

  1. サーバーレスリソースグループを準備し、ネットワークを構成します。

    • DataWorks のサーバーレスリソースグループを準備し、対象のワークスペースにバインドします。

    • リソースグループが Git サーバーの SSH ポートにアクセスできることを確認します。サポートされるポートは 22 のみです。

      • パブリック Git リポジトリ(例:Alibaba Cloud DevOps CodeUp または GitHub.com):リソースグループの VPC にNAT Gatewayおよび EIP を構成し、パブリックネットワークアクセスを有効にします。

      • プライベート Git リポジトリ:リソースグループと Git サーバーがプライベートネットワーク (VPC) 経由で通信できることを確認します。詳細については、「VPC ピアリング接続」をご参照ください。

  2. OSS データソースを準備します。 コード同期では一時ストレージとして OSS を使用します。

    • ご利用の DataWorks ワークスペースと同じリージョンにOSS バケットを作成します。

    • ご利用の DataWorks ワークスペースのデータソース管理ページで、バケットを指すOSS データソースを作成します。

      説明

      OSS データソースで使用するアクセス認証情報が、次の権限を持っていることを確認してください:oss:GetObjectoss:ListObjectsoss:PutObject、およびoss:DeleteObject

ステップ 2:Git 環境の準備

ご利用の Git プラットフォームで専用アカウントを作成し、SSH キーを構成して保護ブランチルールを設定します。

  1. 専用の Git アカウントを作成し、SSH キーを生成します。

    1. Alibaba Cloud DevOps や GitLab などの Git プラットフォームで、自動コードコミット用の専用アカウント(例:dataworks_pusher)を作成し、有効なメールアドレスを設定します。

    2. このアカウント用にRSA アルゴリズムを使用して SSH キーペアを生成します。プロンプトが表示された場合はパスフレーズを設定しないでください。

      • 目的:認証用の SSH 公開鍵および秘密鍵を生成します。

      • コマンド

        # "your_user_email@example.com" は、前のステップで設定したアカウントのメールアドレスに置き換えてください。
        ssh-keygen -t rsa -C "your_user_email@example.com"
        
        # パスフレーズの入力を求められた場合は、Enter キーを押してスキップします。
        # Enter passphrase (empty for no passphrase): [Enter]
        # Enter same passphrase again: [Enter]
      • 結果:コマンドにより、id_rsa(秘密鍵)およびid_rsa.pub(公開鍵)ファイルが~/.ssh/ディレクトリに作成されます。これらのファイルの内容は以降のステップで使用します。

        # 以降のステップで使用するために、公開鍵および秘密鍵の内容をコピーして保存します。
        cat ~/.ssh/id_rsa.pub
        cat ~/.ssh/id_rsa
  2. 公開鍵を Git プラットフォームに追加します。

    Git プラットフォームにログインし、dataworks_pusherアカウントの SSH キー管理ページで、前のステップで生成した公開鍵(id_rsa.pubファイル)の内容を追加します。

  3. リポジトリを作成し、保護ブランチルールを構成します。

    1. DataWorks コード管理専用の Git リポジトリ(例:DataWorks_code)を作成します。

    2. リポジトリ内で、DataWorks が自動管理するブランチの直接変更を防止するため、保護ブランチルールを設定します。この操作はリポジトリ管理者が実施する必要があります。

      重要

      保護ブランチルールが誤って構成されている場合、DataWorks が自動管理するブランチが意図せず変更され、同期が中断される可能性があります。

      • ブランチ名パターンdataworks_*

      • プッシュ許可:特定のメンバーを選択し、dataworks_pusherアカウントを追加します。

      • マージ許可なしを選択します。

ステップ 3:コード同期の構成と初期化

重要

テナント管理者およびワークスペース管理者のみが、現在のワークスペースに対してコード同期を構成できます。その他のロールには、これらの設定を追加または変更する権限がありません。

DataWorks ワークスペースを Git リポジトリに接続し、その後接続を初期化します。

image

  1. DataWorks コンソールのワークスペース一覧ページに移動します。上部ナビゲーションバーで目的のリージョンを選択し、目的のワークスペースを見つけ、操作列でショートカット > Data Studioを選択します。

  2. (オプション)接続性をテストします。 構成を進める前に、DataStudio で一時的な Shell ノードを作成し、準備したサーバーレスリソースグループを使用してデバッグできます。このステップにより、ネットワーク接続および SSH 秘密鍵の有効性が検証されます。

    ネットワーク接続をテストするには、telnetコマンドを実行します。ログに「Connected to ...」と表示された場合、ネットワーク接続は成功しており、タスクを停止できます。

    # your_git_server_domain は、ご利用の Git サーバーのドメイン名または IP アドレスに置き換えてください。たとえば、Alibaba Cloud DevOps の場合は codeup.aliyun.com を使用します。
    telnet your_git_server_domain 22

    Alibaba Cloud DevOps を例にすると、ログに次の内容が表示された場合、ネットワークは接続されており、タスクを停止できます。それ以外の場合は、ネットワーク構成を確認する必要があります。

    image

  3. 左側ナビゲーションウィンドウで、image コード管理ボタンをクリックし、Code sync構成ページに移動します。次のパラメーターを構成します。

    パラメーター

    説明

    SSH Address

    対象の Git リポジトリのSSHアドレス。

    Private key

    ステップ 2 で生成した秘密鍵(id_rsaファイル)の全文を貼り付けます。

    重要

    秘密鍵には、-----BEGIN OPENSSH PRIVATE KEY-----および-----END OPENSSH PRIVATE KEY-----が含まれている必要があります。

    OSS データソース

    準備した OSS データソースを選択します。

    説明

    UI に「現在のリソースグループは OSS データソースへのアクセスが許可されていません。承認ページへ移動してください」というメッセージが表示された場合は、「承認ページへ移動」をクリックして必要な権限を付与します。

    OSS Path

    コードメタデータを格納する OSS パスを指定します(例:dataworks-workspace-code)。

    General Resource Group

    事前に準備したサーバーレスリソースグループを選択します。

  4. 構成が完了したら、同期の開始をクリックします。その後、Git リポジトリの初期化を行う必要があります。Initializationをクリックします。システムが Git リポジトリ内に必要なブランチを自動的に作成し、現在のワークスペースからコードを同期します。この処理には数分かかる場合があります。処理中は、右上隅のimageアイコンをクリックして初期化ログを確認できます。

    説明

    同期を無効にして再度有効にした場合は、再度初期化を行う必要があります。再初期化の前に、OSS からファイルをクリアしてください。

    構成が有効になると、DataWorks はご利用の Git リポジトリ内に次の 3 つのブランチを自動的に作成・管理します。これらを手動で作成または変更しないでください。

    • dataworks_${region}_${projectId}_save:DataWorks での保存操作後のコードに対応します。

    • dataworks_${region}_${projectId}_release_dev:開発環境に正常に公開されたコードに対応します。ワークスペースがシンプルモードの場合、このブランチは生成されません。

    • dataworks_${region}_${projectId}_release_prod:本番環境に正常に公開されたコードに対応します。

    これにより、DataWorks でのすべての保存および公開操作が、それぞれの Git ブランチに自動的にコードおよび構成の変更を同期するようになります。

    デフォルトの保存ブランチをクリックすると、現在のワークスペース内の保存済みノードコード、ワークフロー、ディレクトリなどの情報を確認できます。

ステップ 4:コード同期の検証

  1. DataStudio で Shell ノードを作成し、名前を shell_test にします。

  2. コードエディタで次のコードを入力し、ツールバーの保存ボタンをクリックします。

    echo 'Code push test.'
  3. Git にログインし、対象のリポジトリに移動して保存ブランチを選択します。shell_test フォルダが表示されます。フォルダ内には次の 3 つのファイルが存在するはずです:shell_test.sh (コードファイル)shell_test.spec.json (スケジューリング設定ファイル)、およびdataworks.properties (変数ファイル)shell_test.shをクリックして shell_test ノードおよびそのコード内容を確認します。これにより、同期が成功していることが示されます。

  4. 他の 2 つのブランチの同期を検証するには、ノードを対応する環境に公開します。公開操作の詳細については、「同一ワークスペース内のノードの公開」をご参照ください。

ユースケースと機能

逆方向マージ

DataWorks はコードを Git に同期するだけでなく、強力な逆方向マージ機能も提供します。

この機能は、メインの同期ブランチおよびそこから作成された任意のフィーチャーブランチとの互換性があります。開発者は、独立したブランチ上で標準的な開発手法に従って開発、テスト、コードレビューを行い、成熟したコードを安全に DataWorks に統合できます。このプロセスにより、チーム間の効率的なコラボレーションが可能になります。

重要

この機能を使用するには、同期が有効になっている必要があり、開発者以上の権限を持つロールでのみ利用可能です。

  1. マージを開始します

    DataStudio > コード管理ページで、コードマージセクションを展開します。

  2. マージをプレビューします

    ブランチフィールドにマージ対象のブランチ名(例:feature_cn-shanghai_branch)を入力し、[マージプレビュー] をクリックします。システムはソースブランチと DataWorks のデフォルトのsaveブランチを比較し、追加、変更、削除されたコンテンツを特定します。

    • 競合なし:インターフェイスに変更内容の差分が表示され、追加、変更、または削除されるノードおよびコードの修正内容が明確にリストされます。

    • 競合あり:インターフェイスに競合が直接報告され、具体的な詳細が表示されます。この場合、ローカル環境に戻り、Git で手動で競合を解決した後、再度マージを試行する必要があります。

      image

  3. マージを確定します

    1. プレビュー内容が正しいことを確認したら、Confirm mergeをクリックします。

    2. システムがマージタスクを開始します。マージの進捗状況をリアルタイムで確認できます。

    3. すべての過去のマージ履歴は、下部のコードマージ履歴エリアに表示されます。所有者、マージステータス、ブランチの詳細をいつでも確認できます。

      image

ワークスペース間マージ

Git 同期機能は、ワークスペース間、さらにはリージョン間での DataWorks プロジェクトのクローンをサポートします。この設計により、標準化されたコードセットをテンプレートとして再利用し、複数のビジネスシナリオに配布できます。たとえば、ユニバーサルなユーザーアナリティクスモデルを異なるビジネスライン向けの個別のワークスペースにデプロイし、それぞれの専用コンピューティングリソースおよびデータソース上で実行できます。

  1. 初期設定

    1. git_cross_project_1 および git_cross_project_2 の 2 つのプロジェクトを作成します。これらは異なるリージョンに配置できます。

    2. ステップ 1の手順に従い、各ワークスペースのリソースグループおよび OSS データソースを構成します。両方で同じデータソースを使用できます。その後、ネットワーク接続を構成します。

    3. ステップ 2の手順に従い、両方のワークスペース用の共有リポジトリとなる単一の Git リポジトリを準備します。

    4. ステップ 3の手順に従い、両方のワークスペースに対して Git 同期を構成および初期化します。両方の構成で同じ SSH アドレスおよび秘密鍵を使用します。初期化が成功することを確認します。初期化後、Git リポジトリ内に両方のワークスペースのブランチ(例:プロジェクト 1 用の 270256、プロジェクト 2 用の 270257)が表示されます。

  2. プロジェクト間マージ戦略

    1. プロジェクト間でコードブランチをマージする際、ノードコード、基本属性、およびスケジューリング構成のみがマージされます。ランタイム構成はターゲットワークスペースにマージされません。

    2. 2 つのワークスペースが異なるコンピューティングリソース、リソースグループ、およびデータソースを使用する可能性があるため、merge_mappingリソースマッピングファイルを構成する必要があります。

      1. ローカルマシンでターミナルを開き、ソースワークスペースの保存ブランチをローカルマシンにクローンし、ソースワークスペースのプロジェクト 1 の保存ブランチ(例:dataworks_cn_shenzhen_270256_save)に切り替えます。

        # リモート Git リポジトリをローカルマシンにクローンします。
        git clone git@your_git_server_domain:64dc86a16800a4a57137536/cross_project_shenzhen.git
        
        # プロジェクト 1 の保存ブランチに切り替えます。
        git checkout <your branch name>
      2. merge_mapping マッピングファイルを作成します。

        # cross_project_shenzhen はリポジトリ名です。
        cd cross_project_shenzhen 
        
        # ディレクトリを作成します。
        mkdir -p DATAWORKS_SYSTEM_CONFIG/merge_mapping
        
        # マッピングファイルを作成します。ファイル名は、例として cn_shenzhen_270256_to_cn_shenzhen_270257.properties の形式にしてください。
        vi DATAWORKS_SYSTEM_CONFIG/merge_mapping/<region>_<projectId>_to_<region>_<projectId>.properties

        環境に基づいてファイル内容を構成し、=記号の両側のパラメーター値を変更します。各タイプに対して複数のパラメーターを指定できます。

        # データソース
        # spec.datasource.name.<project1 のデータソース名>=<project2 のデータソース名>
        spec.datasource.name.mysql_01=mysql_02
        
        # リソースグループ
        # spec.runtimeResource.resourceGroup.<project1 のリソースグループ ID>=<project2 のリソースグループ ID>
        spec.runtimeResource.resourceGroup.group_524257424564736=Serverless_res_group_524257424564736_764027070300961
        
        # ノード出力名プレフィックス
        # spec.output-prefix.<project1 の名前>=<project2 の名前>
        spec.output-prefix.git_cross_project_1=git_cross_project_2
        
        # MaxCompute SQL 内のテーブル用プロジェクトプレフィックス
        # script.project-identifier.<project1 の名前>=<project2 の名前>
        script.project-identifier.git_cross_project_1=git_cross_project_2
        
        # イメージ
        # spec.script.runtime.container.imageId.<project1 で使用されるイメージ ID>=<project2 で使用されるイメージ ID>
        spec.script.runtime.container.imageId.Default=System_python311_ubuntu2204_20251201
        
        # RAM ロール
        # spec.script.runtime.linkedRoleArn.<project1 で使用される RAM ロール ARN>=<project2 で使用される RAM ロール ARN>
        spec.script.runtime.linkedRoleArn.acs:ram::1107550004253538:role/aliyundataworksaccessingenirole=acs:ram::1107550004253538:role/aliyundataworksaccessingossrole

        コードを Git リポジトリにプッシュします。

        # 現在のディレクトリ内の変更をステージングエリアに追加します。
        git add .
        # マッピングファイルをコミットします。
        git commit -m "add mapping files"
        # ブランチの内容をリモート Git リポジトリにプッシュします。
        git push
    3. プロジェクト間でコードをマージします

      1. ターゲットワークスペース git_cross_project_2 のDataStudioに移動し、左側ナビゲーションウィンドウでコード管理をクリックし、コードマージタブに移動します。

      2. ブランチ入力フィールドに、ソースワークスペースの保存ブランチ名(例:dataworks_cn_shenzhen_270256_save)を入力します。

        image

      3. [マージプレビュー] をクリックします。プレビュー内容が正しいことを確認したら、ワークスペース git_cross_project_1 からワークスペース git_cross_project_2 にコードをマージします。マージ操作の詳細については、「逆方向マージ」をご参照ください。

課金

課金対象項目は次のとおりです。

  • サーバーレスリソースグループ:同期タスクは 1 CU のリソース仕様を使用します。料金は購入したリソースグループの課金方法によって異なります。詳細については、「サーバーレスリソースグループの課金」をご参照ください。

  • NAT Gateway および EIP:Git リポジトリがインターネット上にある場合、対応するデータ転送料金が発生します。詳細については、「NAT Gateway の課金」をご参照ください。

  • OSS ストレージ:コード同期データの保存に使用され、ストレージ容量およびリクエスト数に基づいて課金されます。詳細については、「OSS 課金概要」をご参照ください。

よくある質問

  • Q:初期化が成功したと表示されましたが、Git リポジトリにブランチが作成されていません。どうすればよいですか?

    A:接続性のテスト」セクションの手順に従い、telnet および SSH 接続が成功しているかどうかを確認してください。サーバーレスリソースグループのネットワーク構成(NAT Gateway/VPC)に特に注意してください。

  • Q:マージ競合が発生しました。どのように解決すればよいですか?

    A:ローカル開発環境で、DataWorks 保存ブランチ(dataworks_${region}_${projectId}_save)をプルし、git mergeまたはgit rebaseを使用して開発ブランチとマージします。競合を解決した後、開発ブランチをリモートリポジトリにプッシュします。最後に、DataWorks ページに戻り、再度マージを試行します。