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 へのネットワークアクセスが必要です。
サーバーレスリソースグループを準備し、ネットワークを構成します。
DataWorks のサーバーレスリソースグループを準備し、対象のワークスペースにバインドします。
リソースグループが Git サーバーの SSH ポートにアクセスできることを確認します。サポートされるポートは 22 のみです。
パブリック Git リポジトリ(例:Alibaba Cloud DevOps CodeUp または GitHub.com):リソースグループの VPC にNAT Gatewayおよび EIP を構成し、パブリックネットワークアクセスを有効にします。
プライベート Git リポジトリ:リソースグループと Git サーバーがプライベートネットワーク (VPC) 経由で通信できることを確認します。詳細については、「VPC ピアリング接続」をご参照ください。
OSS データソースを準備します。 コード同期では一時ストレージとして OSS を使用します。
ご利用の DataWorks ワークスペースと同じリージョンにOSS バケットを作成します。
ご利用の DataWorks ワークスペースのデータソース管理ページで、バケットを指すOSS データソースを作成します。
説明OSS データソースで使用するアクセス認証情報が、次の権限を持っていることを確認してください:
oss:GetObject、oss:ListObjects、oss:PutObject、およびoss:DeleteObject。
ステップ 2:Git 環境の準備
ご利用の Git プラットフォームで専用アカウントを作成し、SSH キーを構成して保護ブランチルールを設定します。
専用の Git アカウントを作成し、SSH キーを生成します。
Alibaba Cloud DevOps や GitLab などの Git プラットフォームで、自動コードコミット用の専用アカウント(例:
dataworks_pusher)を作成し、有効なメールアドレスを設定します。このアカウント用に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
公開鍵を Git プラットフォームに追加します。
Git プラットフォームにログインし、
dataworks_pusherアカウントの SSH キー管理ページで、前のステップで生成した公開鍵(id_rsa.pubファイル)の内容を追加します。リポジトリを作成し、保護ブランチルールを構成します。
DataWorks コード管理専用の Git リポジトリ(例:
DataWorks_code)を作成します。リポジトリ内で、DataWorks が自動管理するブランチの直接変更を防止するため、保護ブランチルールを設定します。この操作はリポジトリ管理者が実施する必要があります。
重要保護ブランチルールが誤って構成されている場合、DataWorks が自動管理するブランチが意図せず変更され、同期が中断される可能性があります。
ブランチ名パターン:
dataworks_*プッシュ許可:特定のメンバーを選択し、
dataworks_pusherアカウントを追加します。マージ許可:なしを選択します。
ステップ 3:コード同期の構成と初期化
テナント管理者およびワークスペース管理者のみが、現在のワークスペースに対してコード同期を構成できます。その他のロールには、これらの設定を追加または変更する権限がありません。
DataWorks ワークスペースを Git リポジトリに接続し、その後接続を初期化します。

DataWorks コンソールのワークスペース一覧ページに移動します。上部ナビゲーションバーで目的のリージョンを選択し、目的のワークスペースを見つけ、操作列でを選択します。
(オプション)接続性をテストします。 構成を進める前に、DataStudio で一時的な Shell ノードを作成し、準備したサーバーレスリソースグループを使用してデバッグできます。このステップにより、ネットワーク接続および SSH 秘密鍵の有効性が検証されます。
ネットワーク接続をテストするには、
telnetコマンドを実行します。ログに「Connected to ...」と表示された場合、ネットワーク接続は成功しており、タスクを停止できます。# your_git_server_domain は、ご利用の Git サーバーのドメイン名または IP アドレスに置き換えてください。たとえば、Alibaba Cloud DevOps の場合は codeup.aliyun.com を使用します。 telnet your_git_server_domain 22Alibaba Cloud DevOps を例にすると、ログに次の内容が表示された場合、ネットワークは接続されており、タスクを停止できます。それ以外の場合は、ネットワーク構成を確認する必要があります。

左側ナビゲーションウィンドウで、
コード管理ボタンをクリックし、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
事前に準備したサーバーレスリソースグループを選択します。
構成が完了したら、同期の開始をクリックします。その後、Git リポジトリの初期化を行う必要があります。Initializationをクリックします。システムが Git リポジトリ内に必要なブランチを自動的に作成し、現在のワークスペースからコードを同期します。この処理には数分かかる場合があります。処理中は、右上隅の
アイコンをクリックして初期化ログを確認できます。説明同期を無効にして再度有効にした場合は、再度初期化を行う必要があります。再初期化の前に、OSS からファイルをクリアしてください。
構成が有効になると、DataWorks はご利用の Git リポジトリ内に次の 3 つのブランチを自動的に作成・管理します。これらを手動で作成または変更しないでください。
dataworks_${region}_${projectId}_save:DataWorks での保存操作後のコードに対応します。dataworks_${region}_${projectId}_release_dev:開発環境に正常に公開されたコードに対応します。ワークスペースがシンプルモードの場合、このブランチは生成されません。dataworks_${region}_${projectId}_release_prod:本番環境に正常に公開されたコードに対応します。
これにより、DataWorks でのすべての保存および公開操作が、それぞれの Git ブランチに自動的にコードおよび構成の変更を同期するようになります。
デフォルトの保存ブランチをクリックすると、現在のワークスペース内の保存済みノードコード、ワークフロー、ディレクトリなどの情報を確認できます。
ステップ 4:コード同期の検証
DataStudio で Shell ノードを作成し、名前を shell_test にします。
コードエディタで次のコードを入力し、ツールバーの保存ボタンをクリックします。
echo 'Code push test.'Git にログインし、対象のリポジトリに移動して保存ブランチを選択します。shell_test フォルダが表示されます。フォルダ内には次の 3 つのファイルが存在するはずです:
shell_test.sh (コードファイル)、shell_test.spec.json (スケジューリング設定ファイル)、およびdataworks.properties (変数ファイル)。shell_test.shをクリックして shell_test ノードおよびそのコード内容を確認します。これにより、同期が成功していることが示されます。他の 2 つのブランチの同期を検証するには、ノードを対応する環境に公開します。公開操作の詳細については、「同一ワークスペース内のノードの公開」をご参照ください。
ユースケースと機能
逆方向マージ
DataWorks はコードを Git に同期するだけでなく、強力な逆方向マージ機能も提供します。
この機能は、メインの同期ブランチおよびそこから作成された任意のフィーチャーブランチとの互換性があります。開発者は、独立したブランチ上で標準的な開発手法に従って開発、テスト、コードレビューを行い、成熟したコードを安全に DataWorks に統合できます。このプロセスにより、チーム間の効率的なコラボレーションが可能になります。
この機能を使用するには、同期が有効になっている必要があり、開発者以上の権限を持つロールでのみ利用可能です。
マージを開始します
ページで、コードマージセクションを展開します。
マージをプレビューします
ブランチフィールドにマージ対象のブランチ名(例:feature_cn-shanghai_branch)を入力し、[マージプレビュー] をクリックします。システムはソースブランチと DataWorks のデフォルトの
saveブランチを比較し、追加、変更、削除されたコンテンツを特定します。競合なし:インターフェイスに変更内容の差分が表示され、追加、変更、または削除されるノードおよびコードの修正内容が明確にリストされます。
競合あり:インターフェイスに競合が直接報告され、具体的な詳細が表示されます。この場合、ローカル環境に戻り、Git で手動で競合を解決した後、再度マージを試行する必要があります。

マージを確定します
プレビュー内容が正しいことを確認したら、Confirm mergeをクリックします。
システムがマージタスクを開始します。マージの進捗状況をリアルタイムで確認できます。
すべての過去のマージ履歴は、下部のコードマージ履歴エリアに表示されます。所有者、マージステータス、ブランチの詳細をいつでも確認できます。

ワークスペース間マージ
Git 同期機能は、ワークスペース間、さらにはリージョン間での DataWorks プロジェクトのクローンをサポートします。この設計により、標準化されたコードセットをテンプレートとして再利用し、複数のビジネスシナリオに配布できます。たとえば、ユニバーサルなユーザーアナリティクスモデルを異なるビジネスライン向けの個別のワークスペースにデプロイし、それぞれの専用コンピューティングリソースおよびデータソース上で実行できます。
初期設定
git_cross_project_1 および git_cross_project_2 の 2 つのプロジェクトを作成します。これらは異なるリージョンに配置できます。
ステップ 1の手順に従い、各ワークスペースのリソースグループおよび OSS データソースを構成します。両方で同じデータソースを使用できます。その後、ネットワーク接続を構成します。
ステップ 2の手順に従い、両方のワークスペース用の共有リポジトリとなる単一の Git リポジトリを準備します。
ステップ 3の手順に従い、両方のワークスペースに対して Git 同期を構成および初期化します。両方の構成で同じ SSH アドレスおよび秘密鍵を使用します。初期化が成功することを確認します。初期化後、Git リポジトリ内に両方のワークスペースのブランチ(例:プロジェクト 1 用の 270256、プロジェクト 2 用の 270257)が表示されます。
プロジェクト間マージ戦略
プロジェクト間でコードブランチをマージする際、ノードコード、基本属性、およびスケジューリング構成のみがマージされます。ランタイム構成はターゲットワークスペースにマージされません。
2 つのワークスペースが異なるコンピューティングリソース、リソースグループ、およびデータソースを使用する可能性があるため、
merge_mappingリソースマッピングファイルを構成する必要があります。ローカルマシンでターミナルを開き、ソースワークスペースの保存ブランチをローカルマシンにクローンし、ソースワークスペースのプロジェクト 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>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
プロジェクト間でコードをマージします
ターゲットワークスペース git_cross_project_2 のDataStudioに移動し、左側ナビゲーションウィンドウでコード管理をクリックし、コードマージタブに移動します。
ブランチ入力フィールドに、ソースワークスペースの保存ブランチ名(例:
dataworks_cn_shenzhen_270256_save)を入力します。
[マージプレビュー] をクリックします。プレビュー内容が正しいことを確認したら、ワークスペース 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 ページに戻り、再度マージを試行します。