本頁面說明如何透過 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 存放區同步處理
如要取得使用「來源控管管理」功能所需的權限,請要求系統管理員在專案中授予您下列任一預先定義的角色:
設定來源控管存放區:
- Cloud Data Fusion Operator (
roles/datafusion.operator) - Cloud Data Fusion 編輯者 (
roles/datafusion.editor) - Cloud Data Fusion 管理員 (
roles/datafusion.admin)
- Cloud Data Fusion Operator (
使用命名空間的推送或提取作業,同步處理管道:
- Cloud Data Fusion Operator (
roles/datafusion.operator) - Cloud Data Fusion 開發人員 (
roles/datafusion.developer) - Cloud Data Fusion 編輯者 (
roles/datafusion.editor) - Cloud Data Fusion 管理員 (
roles/datafusion.admin)
- Cloud Data Fusion Operator (
如要進一步瞭解如何授予角色,請參閱「管理存取權」。
您或許也能透過其他預先定義的角色,取得必要權限。
設定 Git 存放區
如要在 GitHub 中建立 Git 存放區,請按照「建立存放區」一文中的操作說明進行。
如要進一步瞭解 GitHub 和其他版本控管系統中的個人存取權杖,請參閱下列頁面:
將 Git 存放區連結至 Cloud Data Fusion
在每個命名空間的「Source Control Management」(來源控管管理) 分頁中,Cloud Data Fusion 可讓您設定及連結 Git 存放區。如要將命名空間連結至 Git 存放區,請按照下列步驟操作:
控制台
- 在 Cloud Data Fusion Studio 中,按一下「選單」。
- 按一下「命名空間管理員」。
- 在「命名空間管理」頁面中,按一下「來源控制管理」分頁標籤。
- 按一下「連結存放區」。
輸入下列詳細資訊:
- 供應商:選擇 Git 服務供應商,例如 GitHub 或 GitLab。
- 存放區網址:輸入可存取存放區的網址。如果是 GitHub,存放區網址為
https://github.com/HOST/REPO。 - 預設分支 (選用):輸入 Git 的初始分支。這個分支版本可能與 GitHub 上設定的預設分支版本不同。無論 GitHub 上的預設分支為何,系統都會使用這個分支同步處理管道。
- 路徑前置字串 (選用):輸入管道名稱的前置字串,該名稱會儲存在 Git 存放區。舉例來說,如果管道名稱為
DataFusionQuickStart,且您指定的前置字串為namespaceName,則管道會以namespaceName/DataFusionQuickStart的名稱儲存在 Git 存放區。 - 驗證類型:Cloud Data Fusion 允許使用個人化存取權杖做為驗證類型。系統會自動選取這個選項。
- 權杖名稱:輸入可與權杖建立關聯的名稱。
- 權杖:輸入 GitHub 存放區提供的權杖。
- 選用:使用者名稱:輸入權杖的使用者名稱或擁有者。
按一下「驗證」。等待系統驗證連線。
完成設定後,按一下「儲存並關閉」確認設定。

REST API
在 Cloud Data Fusion 中建立包含個人存取權杖的密鑰。
執行下列指令:
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 的個人存取權權杖。
執行下列指令:
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:要連結的存放區網址。使用httpsURL,例如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 存放區,請按照下列步驟操作:
控制台
- 在 Cloud Data Fusion Studio 中,按一下「選單」。
- 按一下「命名空間管理員」。
- 在「命名空間管理」頁面中,按一下「來源控制管理」分頁標籤。
- 找出要同步處理的 Git 存放區,然後按一下「同步處理管道」。
- 按一下「命名空間管道」分頁標籤。
搜尋並選取要推送至 Git 存放區的管道。
如果最新版本的管道已推送至或從 Git 存放區提取,則「已連線至 Git」狀態會顯示
Connected。如果管道從未推送至 GitHub,則「已連結至 Git」狀態會顯示空白 (-)。如果您部署的管道版本較新,且已與 Git 存放區同步,則「已連結至 Git」狀態會從
Connected變更為空白 (-)。按一下「Push to repository」(推送至存放區)。
輸入修訂版本訊息,然後按一下「確定」。
推送作業開始後,系統會顯示訊息,指出所選管道正在推送至遠端存放區。

推送作業成功完成後,畫面上會顯示成功訊息,指出已推送至遠端存放區的管道數量。
如果推送作業失敗,請檢查 GitHub 中的管道是否為最新版本。系統會針對每次失敗的推送作業顯示錯誤訊息。如要查看錯誤詳細資料,請展開錯誤訊息。
您也可以從 pipeline 設計工作室將個別 pipeline 推送至 Git 存放區:
- 在 Cloud Data Fusion Studio 中,按一下「選單」。
- 按一下「清單」。
- 按一下要推送至 Git 存放區的管道。
- 在管道頁面中,依序點選「動作」>「推送至存放區」。
- 輸入修訂版本訊息,然後按一下「確定」。

REST API
將一組管道從 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_1、PIPELINE_NAME_2:要推送的管道名稱。COMMIT_MESSAGE:Git 修訂版本的提交訊息。
回應會包含推送作業的 ID。例如:
RESPONSE { "id": OPERATION_ID }如要輪詢推送作業的狀態,請執行下列指令:
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 存放區同步至命名空間,請按照下列步驟操作:
控制台
- 在 Cloud Data Fusion Studio 中,按一下「選單」。
- 按一下「命名空間管理員」。
- 在「命名空間管理」頁面中,按一下「來源控制管理」分頁標籤。
- 找出要同步處理的 Git 存放區,然後按一下「同步處理管道」。
- 按一下「Repository pipelines」分頁標籤。 系統會顯示 Git 存放區中儲存的所有管道。
- 搜尋並選取要從 Git 存放區提取至 Cloud Data Fusion 命名空間的管道。
按一下「從存放區提取」。
系統會開始執行提取作業,並顯示訊息,指出正在從遠端存放區提取所選管道。Cloud Data Fusion 會在設定的路徑下尋找 JSON 檔案,並將這些檔案擷取及部署為 Cloud Data Fusion 的管道。

提取作業完成後,畫面上會顯示成功訊息,指出從遠端存放區提取的管道數量。
如果提取作業失敗,系統會顯示錯誤訊息。如要查看錯誤詳細資料,請展開錯誤訊息。
您也可以從 Git 存放區將個別管道提取至管道設計工作室的命名空間:
- 在 Cloud Data Fusion Studio 中,按一下「選單」。
- 按一下「清單」。
- 按一下要從 Git 存放區提取的管道。
- 在管道頁面中,依序點選「動作」>「從存放區提取」。

REST API
將一組管道從 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_1、PIPELINE_NAME_2:要提取的管道名稱。
回應會包含提取作業的 ID。例如:
RESPONSE { "id": OPERATION_ID }如要輪詢提取作業的狀態,請執行下列指令:
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 存放區設定,請按照下列步驟操作:
控制台
- 在 Cloud Data Fusion Studio 中,按一下「選單」。
- 按一下「命名空間管理員」。
- 在「命名空間管理」頁面中,按一下「來源控制管理」分頁標籤。
- 找出要刪除的 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。
後續步驟
- 進一步瞭解如何使用 GitHub 存放區管理管道。