DataWorks は Git と統合し、新しいデータ開発モデルを提供します。コードの同期およびマージ機能により、DataWorks プラットフォームとご利用の Git リポジトリ間のシームレスな接続が実現します。コードを保存または公開すると、すべての変更が指定された Git ブランチに自動的に同期されます。また、Git ブランチからのコード変更を DataWorks にマージして戻すこともできます。
この機能は DataWorks Enterprise Edition でのみ利用可能で、招待プレビュー段階です。この機能を有効にするには、チケットを送信してください。
概要
DataWorks と Git の連携には、2 つのフローがあります:
DataWorks から Git への同期:DataWorks でコードを保存または公開すると、変更は Git リポジトリの保護されたブランチに自動的にコミットされます。このプロセスは、専用の Git アカウントとネットワークアクセスを持つ Serverless リソースグループによって自動的に実行されます。
Git から DataWorks へのマージ:Git リポジトリのメインブランチや他のブランチから、コードの変更を DataWorks にマージします。
DataWorks は、Git リポジトリ内で以下の 3 つのブランチを自動的に作成および管理します。手動での変更を防ぐために、ブランチ保護ルールが使用されます:
dataworks_${region}_${projectName}_save:DataWorks での保存操作後のコードに対応します。dataworks_${region}_${projectName}_release_dev:開発環境に正常に公開されたコードに対応します。dataworks_${region}_${projectName}_release_prod:本番環境に正常に公開されたコードに対応します。
ステップ 1:クラウドリソースとネットワーク環境の準備
コード同期タスクは、実行のために Serverless リソースグループに依存し、Git リポジトリと OSS へのネットワークアクセスが必要です。
Serverless リソースグループを準備し、ネットワークを設定します。
DataWorks の Serverless リソースグループを準備し、対象のワークスペースにアタッチします。
リソースグループが Git サーバーの SSH ポートにアクセスできることを確認してください。ポート 22 のみがサポートされています。
パブリック Git リポジトリ (Apsara DevOps CodeUp や GitHub.com など):リソースグループが属する VPC にインターネット NAT ゲートウェイと EIP を設定し、パブリックネットワークアクセスを有効にします。
プライベート Git リポジトリ:リソースグループと Git サーバー間のプライベートネットワーク (VPC) 経由での接続性を確保します。詳細については、「VPC ピアリング接続」をご参照ください。
OSS データソースを準備します。コード同期機能は、一時ストレージとして OSS を使用します。
DataWorks ワークスペースと同じリージョンに OSS バケットを作成します。
DataWorks ワークスペースの [データソース] ページで、そのバケットを指す OSS データソースを作成します。
説明AccessKey ペアを使用するデータソースのみがサポートされています。
ステップ 2:Git 環境の準備
ご利用の Git プラットフォームで、専用アカウントの作成、SSH キーの設定、ブランチ保護ルールの設定を行います。
専用の Git アカウントを作成し、SSH キーを生成します。
Apsara 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]結果:コマンドが正常に実行されると、
~/.ssh/フォルダとid_rsa(秘密鍵) およびid_rsa.pub(公開鍵) ファイルが生成されます。これらのファイルの内容は、後続のステップで使用します。# 公開鍵と秘密鍵の内容をコピーして保存します。後続のステップで必要になります。 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 ノードを作成し、準備した Serverless リソースグループを使用してデバッグできます。このステップでは、ネットワーク接続性と SSH 秘密鍵の有効性を検証します。
ネットワーク接続性のテスト:
telnetコマンドを実行します。ログに「Connected to ...」と表示された場合、ネットワークは接続されています。その後、タスクを停止できます。# your_git_server_domain をご利用の Git サーバーのドメイン名または IP アドレスに置き換えます (例:Apsara DevOps の場合は codeup.aliyun.com)。 telnet your_git_server_domain 22Apsara DevOps の場合、ログに以下の内容が表示されれば、ネットワークは接続されています。タスクを停止できます。そうでない場合は、ネットワーク設定を確認してください。

SSH キーの有効性のテスト:以下のスクリプトを実行します。ログに「Welcome to ...」などの成功メッセージが表示された場合、秘密鍵は正しく設定されています。
# SSH 秘密鍵が正しいか確認します。期待される出力は "Welcome to xxx,..." です。 # 以下のスクリプトは、ご利用の秘密鍵の内容を一時的な実行環境の標準 SSH キーファイル (~/.ssh/id_rsa) に書き込みます。 # その後、Git サーバーへの接続をテストして秘密鍵を認証します。 # 秘密鍵の内容を Base64 にエンコードします id_rsa_base64=$(cat <<'EOF' | base64 -w 0 # [ここに秘密鍵 (id_rsa ファイル) の全内容を貼り付けます] -----BEGIN OPENSSH PRIVATE KEY----- ... -----END OPENSSH PRIVATE KEY----- EOF ) # 実行環境で SSH キーファイルを再作成します id_rsa=$(base64 -d <<< "$id_rsa_base64") mkdir ~/.ssh echo "$id_rsa" > ~/.ssh/id_rsa chmod 600 ~/.ssh/id_rsa ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub chmod 644 ~/.ssh/id_rsa.pub # SSH 接続をテストします (your_git_server_domain をご利用の Git SSH アドレスに置き換えます。例:codeup.aliyun.com) ssh -T git@your_git_server_domain[実行] をクリックします。Apsara DevOps の場合、実行ログに以下の内容が表示されれば、アカウントの秘密鍵は正しいです。

左側のナビゲーションウィンドウの下部にある をクリックして、[コード同期] ページを開きます。以下のパラメーターを設定します:
注意:[コード同期] タブは、ホワイトリストが有効になった後にのみ表示されます。
名前
説明
Git リポジトリ アドレス
対象の Git リポジトリの SSH アドレス。
秘密鍵
ステップ 2 で生成した秘密鍵 (
id_rsaファイル) の全内容を貼り付けます。重要秘密鍵の内容には、
-----BEGIN OPENSSH PRIVATE KEY-----と-----END OPENSSH PRIVATE KEY-----を含める必要があります。DataWorks OSS データソース
準備した OSS データソースを選択します。
説明インターフェイスに「現在のリソースグループは OSS データソースへのアクセスが許可されていません。承認に進んでください」と表示された場合は、クリックして承認します。
OSS ストレージパス
コードのメタデータを保存する OSS パスを指定します。例:
dataworks-workspace-code。[DataWorks OSS 汎用リソースグループ]
事前に準備した Serverless リソースグループを選択します。
構成が完了したら、[同期の有効化] をクリックします。次に、[初期化] をクリックして Git リポジトリを初期化する必要があります。システムは自動的に Git リポジトリに必要な DataWorks ブランチを作成し、現在のワークスペースからコードを同期します。この処理には数分かかる場合があります。
説明同期を無効にしてから再度有効にした場合は、再度初期化する必要があります。

設定が有効になると、DataWorks はご利用の Git リポジトリに以下の 3 つのブランチを自動的に作成および管理します。これらを手動で作成または変更しないでください:
dataworks_${region}_${projectName}_save:DataWorks での保存操作からのコードに対応します。dataworks_${region}_${projectName}_release_dev:開発環境に正常に公開されたコードに対応します。dataworks_${region}_${projectName}_release_prod:本番環境に正常に公開されたコードに対応します。
これ以降、DataWorks でのすべての保存および公開操作は、対応するコードと設定の変更をそれぞれの Git ブランチに自動的に同期します。
デフォルトの保存ブランチをクリックすると、現在のワークスペースに保存されているノードコード、ワークフロー、フォルダ、その他の情報を表示できます。
ステップ 4:コード同期の検証
新しい DataStudio の Shell ノードを作成し、shell_test という名前を付けます。
コードエディタページで、以下のコードを入力し、ツールバーの保存ボタンをクリックします。
echo 'Code push test.'Git にログインし、対象のリポジトリに移動して、保存ブランチを選択します。shell_test フォルダを見つけます。フォルダ内には
shell_test.sh (コードファイル)とshell_test.spec.json (スケジューリング設定ファイル)の 2 つのファイルが表示されます。shell_test.shをクリックして、shell_test ノードとそのコード内容を表示します。これにより、同期が成功したことが示されます。他の 2 つのブランチの同期を検証するには、ノードを対応する環境に公開します。公開の詳細については、「同一ワークスペース内での公開」をご参照ください。
複数人での共同作業の有効化:Git ブランチからの逆マージのサポート
DataWorks は、コードを Git に同期するだけでなく、強力な逆マージ機能も提供します。リモートの Git ブランチからの最新の変更を DataWorks プラットフォームにマージして戻すことができます。
この機能は、メイン同期ブランチとそこから作成されたフィーチャーブランチの両方と互換性があります。開発者は、メイン同期ブランチの開発パラダイムに従い、独立したブランチで開発、テスト、コードレビューを行い、完成したコードを DataWorks に統合できます。これにより、プロフェッショナルで効率的なチームコラボレーションが可能になります。
この機能を使用するには同期が有効になっている必要があり、開発者権限以上のロールで利用できます。
マージのエントリポイント
DataStudio インターフェイスの左側のナビゲーションウィンドウで、
[コードマージ] をクリックしてコードマージインターフェイスに移動します。マージプレビュー
ソースブランチの名前を入力し、[マージプレビュー] をクリックします。システムはソースブランチとデフォルトの DataWorks
saveブランチを比較し、新規、変更、削除された内容を特定します。競合なし:インターフェイスに変更の差分が表示され、追加、変更、または削除されるノードとコードの変更が明確にリストされます。
競合あり:インターフェイスに競合が通知され、その詳細が表示されます。ローカル環境に戻り、Git で競合を手動で解決してから、再度マージを開始する必要があります。



マージの確認
プレビューを確認した後、[マージの確認] をクリックします。
システムがマージタスクを開始します。マージの進行状況をリアルタイムで確認できます。
すべての過去のマージ履歴は、下の [コードマージ履歴] エリアに表示されます。担当者、マージステータス、ブランチの詳細をいつでも確認できます。

課金
課金対象のリソースは以下の通りです:
Serverless リソースグループ:同期タスクは 0.5 CU のリソース仕様を使用します。料金は購入したリソースグループの課金方法によって異なります。詳細については、「Serverless リソースグループの課金」をご参照ください。
インターネット NAT ゲートウェイと EIP:Git リポジトリがパブリックネットワーク上にある場合、対応するトラフィック料金が発生します。詳細については、「NAT ゲートウェイの課金」をご参照ください。
OSS ストレージ:コード同期データの保存に使用されます。ストレージ容量とリクエスト数に基づいて課金されます。詳細については、「OSS の課金概要」をご参照ください。
よくある質問
Q:初期化は成功しましたが、Git リポジトリにブランチが作成されません。どうすればよいですか?
A:「接続性のテスト」セクションの手順に従って、telnet と SSH 接続が成功するかどうかを確認してください。Serverless リソースグループのネットワーク設定 (NAT ゲートウェイ/VPC) が正しいことを確認してください。
Q:コードのマージ時に競合が報告されました。どのように対処すればよいですか?
A:ローカルの開発環境で、DataWorks の保存ブランチ (dataworks_${region}_${projectName}_save) をローカル環境にプルします。`git merge` または `git rebase` を使用して、開発ブランチとマージします。競合を解決した後、開発ブランチをリモートリポジトリにプッシュします。最後に、DataWorks ページに戻り、再度マージを開始します。