使用原始碼控管功能管理管道

本頁面說明如何透過 Git 存放區,在 Cloud Data Fusion 中使用來源控管功能管理管道。

關於原始碼控管管理

Cloud Data Fusion 提供視覺化設計管道的功能,可進行 ETL 和 ELT 整合。為妥善管理開發和正式環境之間的管道,Cloud Data Fusion 允許使用 GitHub 和其他版本管控系統,對管道進行來源控管管理。

Cloud Data Fusion 的來源控管管理功能可讓您執行下列操作:

  • 將每個 Cloud Data Fusion 命名空間與版本管控系統整合。
  • 在中央 Git 存放區中管理管道。
  • 查看及稽核管道變更。
  • 還原管道變更。
  • 有效與團隊協作,同時確保集中控管。

事前準備

  • 原始碼控管管理工具支援與 GitHub、Bitbucket Server、Bitbucket Cloud 和 GitLab 存放區整合。
  • 不支援 GitHub OAuth。
  • 來源控管管理僅支援批次管道。
  • 來源控管管理系統僅支援管道設計 JSON,用於推送和提取作業。不支援執行設定。
  • 連結存放區的大小上限為 5 GB。

必要角色和權限

Cloud Data Fusion 的來源控管管理包含兩項重要作業:

  • 設定來源控制存放區
  • 使用推送和提取作業,將管道與 Git 存放區同步處理

如要取得使用「來源控管管理」功能所需的權限,請要求系統管理員在專案中授予您下列任一預先定義的角色:

如要進一步瞭解如何授予角色,請參閱「管理存取權」。

您或許也能透過其他預先定義的角色,取得必要權限。

設定 Git 存放區

如要在 GitHub 中建立 Git 存放區,請按照「建立存放區」一文中的操作說明進行。

如要進一步瞭解 GitHub 和其他版本控管系統中的個人存取權杖,請參閱下列頁面:

將 Git 存放區連結至 Cloud Data Fusion

在每個命名空間的「Source Control Management」(來源控管管理) 分頁中,Cloud Data Fusion 可讓您設定及連結 Git 存放區。如要將命名空間連結至 Git 存放區,請按照下列步驟操作:

控制台

  1. 在 Cloud Data Fusion Studio 中,按一下「選單」
  2. 按一下「命名空間管理員」
  3. 在「命名空間管理」頁面中,按一下「來源控制管理」分頁標籤。
  4. 按一下「連結存放區」
  5. 輸入下列詳細資訊:

    • 供應商:選擇 Git 服務供應商,例如 GitHubGitLab
    • 存放區網址:輸入可存取存放區的網址。如果是 GitHub,存放區網址為 https://github.com/HOST/REPO
    • 預設分支 (選用):輸入 Git 的初始分支。這個分支版本可能與 GitHub 上設定的預設分支版本不同。無論 GitHub 上的預設分支為何,系統都會使用這個分支同步處理管道。
    • 路徑前置字串 (選用):輸入管道名稱的前置字串,該名稱會儲存在 Git 存放區。舉例來說,如果管道名稱為 DataFusionQuickStart,且您指定的前置字串為 namespaceName,則管道會以 namespaceName/DataFusionQuickStart 的名稱儲存在 Git 存放區。
    • 驗證類型: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:要連結的存放區網址。使用 https URL,例如 https://github.com/user/repo.git
    • DEFAULT_BRANCH:用於推送和提取作業的分支。如未指定,系統會使用存放區預設的分支版本,例如主要分支版本。
    • PATH_TO_DIRECTORY:存放設定檔的存放區目錄路徑。
    • AUTH_TYPE:驗證類型。 系統僅支援 PAT。請參閱「GitHub 中的精細個人存取權杖」。
    • PASSWORD_SECRET_KEY:包含個人存取權杖的密鑰名稱,用於 PAT 驗證類型。
    • USER_NAME:如果驗證類型為 PAT,可以省略這個值。

將 Cloud Data Fusion 管道與遠端存放區同步

使用命名空間設定 Git 存放區後,您就可以推送及提取管道,並與 Git 存放區同步處理。

將管道從 Cloud Data Fusion 推送至 Git 存放區

如要將命名空間中的多個已部署管道同步至 Git 存放區,請按照下列步驟操作:

控制台

  1. 在 Cloud Data Fusion Studio 中,按一下「選單」
  2. 按一下「命名空間管理員」
  3. 在「命名空間管理」頁面中,按一下「來源控制管理」分頁標籤。
  4. 找出要同步處理的 Git 存放區,然後按一下「同步處理管道」
  5. 按一下「命名空間管道」分頁標籤。
  6. 搜尋並選取要推送至 Git 存放區的管道。

    如果最新版本的管道已推送至或從 Git 存放區提取,則「已連線至 Git」狀態會顯示 Connected。如果管道從未推送至 GitHub,則「已連結至 Git」狀態會顯示空白 (-)。

    如果您部署的管道版本較新,且已與 Git 存放區同步,則「已連結至 Git」狀態會從 Connected 變更為空白 (-)。

  7. 按一下「Push to repository」(推送至存放區)

  8. 輸入修訂版本訊息,然後按一下「確定」

    推送作業開始後,系統會顯示訊息,指出所選管道正在推送至遠端存放區。

將管道從 Cloud Data Fusion 推送至 Git 存放區。

推送作業成功完成後,畫面上會顯示成功訊息,指出已推送至遠端存放區的管道數量。

如果推送作業失敗,請檢查 GitHub 中的管道是否為最新版本。系統會針對每次失敗的推送作業顯示錯誤訊息。如要查看錯誤詳細資料,請展開錯誤訊息。

您也可以從 pipeline 設計工作室將個別 pipeline 推送至 Git 存放區:

  1. 在 Cloud Data Fusion Studio 中,按一下「選單」
  2. 按一下「清單」
  3. 按一下要推送至 Git 存放區的管道。
  4. 在管道頁面中,依序點選「動作」>「推送至存放區」
  5. 輸入修訂版本訊息,然後按一下「確定」

從管道設計工作室推送管道。

REST API

  1. 將一組管道從 Cloud Data Fusion 推送至 Git 存放區:

    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:要推送的管道名稱。
    • COMMIT_MESSAGE:Git 修訂版本的提交訊息。

    回應會包含推送作業的 ID。例如:

    RESPONSE
    {
    "id": OPERATION_ID
    }
    
  2. 如要輪詢推送作業的狀態,請執行下列指令:

    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:從推送作業收到的作業 ID。

    回應會包含推送作業的狀態。例如:

    RESPONSE
    {
    "id": OPERATION_ID
    "done": True/False
    "status": STARTING/RUNNING/SUCCEEDED/FAILED
    "error": {"message": ERROR_MESSAGE, "details":[{"resourceUri": RESOURCE, "message": ERROR_MESSAGE}]}
    }
    

    如要確認推送作業是否完成,請檢查回應中的 done 屬性。如果作業失敗,請查看 error 屬性瞭解詳情。

將管道從 Git 存放區提取至 Cloud Data Fusion

如要將多個管道從 Git 存放區同步至命名空間,請按照下列步驟操作:

控制台

  1. 在 Cloud Data Fusion Studio 中,按一下「選單」
  2. 按一下「命名空間管理員」
  3. 在「命名空間管理」頁面中,按一下「來源控制管理」分頁標籤。
  4. 找出要同步處理的 Git 存放區,然後按一下「同步處理管道」
  5. 按一下「Repository pipelines」分頁標籤。 系統會顯示 Git 存放區中儲存的所有管道。
  6. 搜尋並選取要從 Git 存放區提取至 Cloud Data Fusion 命名空間的管道。
  7. 按一下「從存放區提取」

    系統會開始執行提取作業,並顯示訊息,指出正在從遠端存放區提取所選管道。Cloud Data Fusion 會在設定的路徑下尋找 JSON 檔案,並將這些檔案擷取及部署為 Cloud Data Fusion 的管道。

將管道從 Git 存放區拉取至 Cloud Data Fusion。

提取作業完成後,畫面上會顯示成功訊息,指出從遠端存放區提取的管道數量。

如果提取作業失敗,系統會顯示錯誤訊息。如要查看錯誤詳細資料,請展開錯誤訊息。

您也可以從 Git 存放區將個別管道提取至管道設計工作室的命名空間:

  1. 在 Cloud Data Fusion Studio 中,按一下「選單」
  2. 按一下「清單」
  3. 按一下要從 Git 存放區提取的管道。
  4. 在管道頁面中,依序點選「動作」>「從存放區提取」

從管道設計工作室提取管道。

REST API

  1. 將一組管道從 Git 存放區拉取至 Cloud Data Fusion:

    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:要提取的管道名稱。

    回應會包含提取作業的 ID。例如:

    RESPONSE
    {
    "id": OPERATION_ID
    }
    
  2. 如要輪詢提取作業的狀態,請執行下列指令:

    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:從提取作業收到的作業 ID。

    回應會包含提取作業的狀態。例如:

    RESPONSE
    {
    "id": OPERATION_ID
    "done": True/False
    "status": STARTING/RUNNING/SUCCEEDED/FAILED
    "error": {"message": ERROR_MESSAGE, "details":[{"resourceUri": RESOURCE, "message": ERROR_MESSAGE}]}
    }
    

    如要確認提取作業是否完成,請檢查回應中的 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。

後續步驟