全部產品
Search
文件中心

DataWorks:Git代碼同步與合并

更新時間:Dec 04, 2025

DataWorks 與 Git 深度整合,賦能資料研發新模式。DataWorks 的代碼同步及合并功能實現了平台與 Git 倉庫的無縫對接。無論是代碼的儲存還是發布,所有變更都能自動同步至指定的 Git 分支。同時,您也可以輕鬆地將 Git 分支上的代碼修改合并回 DataWorks。

重要

本功能僅支援DataWorks企業版,且處於邀測階段。您可提交工單聯絡技術支援人員開通白名單。

功能概述

DataWorks與Git的整合套件含兩種流程:

  • DataWorks到Git的同步:儲存或發布DataWorks中的代碼時,變更內容將自動認可至Git倉庫的保護分支。該過程由專用的Git賬戶和具備網路訪問能力的Serverless資源群組自動執行。

  • Git到DataWorks的合并:將Git倉庫的主分支或獨立分支的代碼變更,合并回DataWorks。

DataWorks在Git倉庫中自動建立並管理以下三個分支,並通過分支保護規則防止手動更改:

  • dataworks_${region}_${projectName}_save:對應在DataWorks中執行儲存操作後的代碼。

  • dataworks_${region}_${projectName}_release_dev:對應成功發布到開發環境的代碼。

  • dataworks_${region}_${projectName}_release_prod:對應成功發布到生產環境的代碼。

步驟一:準備雲資源與網路環境

代碼同步任務依賴Serverless資源群組執行,並需通過網路訪問Git倉庫和OSS。

  1. 準備Serverless資源群組並配置網路。

    • 準備一個DataWorks的Serverless資源群組,並綁定到目標工作空間。

    • 確保該資源群組可訪問Git伺服器的SSH連接埠(僅支援22連接埠)。

      • 公網Git倉庫(例如雲效CodeUp、GitHub.com):為資源群組所在的VPC配置公網NAT Gateway和EIP,以開通公網訪問能力。

      • 私網Git倉庫:確保資源群組與Git伺服器之間的私人網路(VPC)可達,詳情參見VPC對等串連

  2. 準備OSS資料來源。 代碼同步功能使用OSS進行臨時儲存。

    • 在與DataWorks工作空間相同的地區(Region)下,建立一個OSS Bucket

    • 在DataWorks工作空間的資料來源管理頁面,建立一個指向該Bucket的OSS資料來源

      說明

      僅支援使用存取金鑰(Access Key)模式的資料來源。

步驟二:準備Git環境

在Git平台建立專用賬戶、配置SSH密鑰及設定分支保護規則。

  1. 建立Git專用賬戶並產生SSH密鑰。

    1. 在Git平台(例如雲效、GitLab)建立專用於代碼自動認可的賬戶(例如 dataworks_pusher),並配置有效郵箱。

    2. 為該賬戶產生RSA演算法模式的SSH金鑰組,產生過程中無需設定口令(passphrase)。

      • 目的:產生用於認證的SSH公開金鑰和私密金鑰。

      • 命令

        # 將 "your_user_email@example.com" 替換為上一步中配置的賬戶郵箱
        ssh-keygen -t rsa -C "your_user_email@example.com"
        
        # 在提示輸入口令時,直接按斷行符號鍵跳過
        # Enter passphrase (empty for no passphrase): [斷行符號]
        # Enter same passphrase again: [斷行符號]
      • 結果:命令執行成功後,在 ~/.ssh/ 目錄下產生 id_rsa(私密金鑰)和 id_rsa.pub(公開金鑰)檔案。後續步驟將使用這兩個檔案的內容。

        # 複製並儲存公開金鑰與私密金鑰內容,後續步驟需要使用
        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 賬戶。

      • 允許合并:選擇不允許任何人

步驟三:配置並初始化代碼同步

重要

僅支援租用戶系統管理員及工作空間管理員設定當前空間的代碼同步配置,其他角色無許可權新增或者變更該內容。

建立DataWorks工作空間與Git倉庫的串連,並啟動初始化。

image

  1. 進入DataWorks工作空間列表頁,在頂部切換至目標地區,找到目標工作空間,單擊操作列的快速進入 > Data Studio,進入Data Studio。

  2. (可選)串連性測試。正式配置前,可在Data Studio中建立臨時Shell節點,使用已準備的Serverless資源群組進行調試,以驗證網路連通性和SSH私密金鑰的有效性。

    1. 測試網路連通性:運行telnet命令。如果日誌顯示“Connected to ...”,表示網路連通,網路連通後,即可停止運行。

      # 替換為您的Git伺服器網域名稱或IP,如雲效地址:codeup.aliyun.com
      telnet your_git_server_domain 22

      以雲效為例,當日誌出現以下內容,則說明網路已連通,可停止運行任務;否則,需要檢查網路設定是否成功。

      image

    2. 測試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

      單擊運行,以雲效為例,若作業記錄中出現以下內容,說明該帳號的私密金鑰正確。

      image

  3. 在左側導覽列底部單擊image > Data Studio設定 > 代碼同步,進入代碼同步頁面。配置以下參數:

    注意:代碼同步頁簽需開通白名單才能看到。

    名稱

    描述

    Git地址

    目標Git程式碼程式庫的SSH地址。

    私密金鑰

    粘貼步驟二中產生的私密金鑰(id_rsa檔案)的完整內容。

    重要

    私密金鑰內容需要包括-----BEGIN OPENSSH PRIVATE KEY----------END OPENSSH PRIVATE KEY-----

    DataWorks OSS 資料來源

    選擇已準備好的OSS資料來源。

    說明

    介面若提示:“未授權當前資源群組訪問OSS資料來源許可權,去授權”,點擊去授權即可。

    OSS 儲存路徑

    指定一個OSS路徑用於存放代碼中繼資料,例如:dataworks-workspace-code

    DataWorks OSS 通用資源群組

    選擇上文準備的Serverless資源群組。

  4. 配置完成後,單擊開始同步。開啟同步後,需要對Git程式碼程式庫進行初始化。單擊初始化,系統將自動在Git倉庫中建立DataWorks所需的分支並同步當前工作空間中的代碼,可能需要數分鐘。

    說明

    關閉同步後,再次開啟同步,需要重新初始化。

    image

    配置生效後,DataWorks會自動在您的Git倉庫中建立並管理以下三個分支,請勿手動建立或修改它們:

    • dataworks_${region}_${projectName}_save:對應在DataWorks中儲存操作的代碼。

    • dataworks_${region}_${projectName}_release_dev:對應發布到開發環境成功的代碼。

    • dataworks_${region}_${projectName}_release_prod:對應發布到生產環境成功的代碼。

    此後,在DataWorks中的每一次儲存和發佈動作,都會自動將相應的代碼和配置變更內容同步到Git對應的分支中。

    點擊預設的save分支,可查看當前工作空間中已儲存的節點代碼、工作流程、目錄等資訊。

步驟四:驗證代碼同步

  1. 建立資料開發Shell節點,命名為:shell_test。

  2. 在代碼編輯頁中填寫如下代碼,並單擊工具列的儲存按鈕。

    echo 'Code push test.'
  3. 登入Git,進入目標程式碼程式庫,選擇save分支,找到shell_test檔案夾,可觀察到檔案夾下存在shell_test.sh(代碼檔案)shell_test.spec.json(調度設定檔)兩個檔案,單擊shell_test.sh可查看到shell_test節點及其代碼內容,即為同步成功。

  4. 其餘兩個分支的同步情況,可通過發布節點到相應的環境中驗證,發佈動作詳見:同工作空間發布

賦能多人協同:支援從 Git 分支反向合并

DataWorks 不僅支援將代碼同步至 Git,更實現了強大的反向合并能力。您可以輕鬆將 Git 遠端分支的最新變更合并回 DataWorks 平台。

這不僅包括主同步分支,也完全相容基於該分支建立的各類特性分支(Feature Branch)。開發人員可以遵循主同步分支的開發範式,在獨立分支上進行開發、測試與代碼審查(Code Review),最終將成熟的代碼安全地整合回 DataWorks,賦能專業、高效的團隊協同開發。

重要

此功能需要開啟同步,支援開發及更高許可權的角色。

  1. 合并入口

    在資料開發Data Studio介面左側的導覽列,單擊image代碼合并,進入代碼合并介面。

  2. 合并預覽

    輸入要合并的分支名稱後,單擊合并預覽,系統將比較來源分支與DataWorks預設的save分支之間的新增,變更,刪除的內容。

    • 無衝突:介面將展示變更內容的Diff,清晰地列出將被新增、修改或刪除的節點及代碼改動詳情。

    • 有衝突:介面將直接提示衝突,並展示具體的衝突內容。此時您需要返回本地,在Git中手動解決衝突後,再重新發起合并。

    image

    image

    image

  3. 確認合并

    1. 在預覽無誤後,單擊確認合并

    2. 系統將開始執行合并任務,您可以即時看到合并進度。

    3. 所有歷史合并記錄都會展示在下方的 代碼合并歷史 地區,您可以隨時查看責任人、合并狀態和分支明細。

      image

產品計費

涉及的計費資源主要包括:

  • Serverless資源群組:同步任務使用的資源規格為0.5CU,根據購買資源群組的計費方式不同,產生的費用也不相同。詳見:Serverless資源群組計費

  • 公網NAT Gateway與EIP:如果Git倉庫位於公網,會產生相應的流量費用。詳見:NAT Gateway計費

  • OSS儲存:用於儲存代碼同步資料,按儲存容量和請求次數計費。詳見:OSS計費概述

常見問題FAQ

  • Q: 顯示初始化成功,但是Git倉庫中未建立分支,怎麼辦?

    A: 請按串連性測試章節,依次排查telnet和ssh串連是否成功。重點檢查Serverless資源群組的網路設定(NAT Gateway/VPC)是否正確。

  • Q: 合并代碼時提示衝突,該如何處理?

    A: 請在您的本地開發環境中,將DataWorks的save分支 (dataworks_${region}_${projectName}_save) 拉取到本地,與您的開發分支進行合并(git merge或git rebase),解決衝突後,再將您的開發分支推送到遠程,最後回到DataWorks頁面重新發起合并。