本頁面說明如何透過 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 作業人員 (
roles/datafusion.operator
) - Cloud Data Fusion 編輯器 (
roles/datafusion.editor
) - Cloud Data Fusion 管理員 (
roles/datafusion.admin
)
- Cloud Data Fusion 作業人員 (
使用命名空間的推送或拉取作業同步處理管道:
- Cloud Data Fusion 作業人員 (
roles/datafusion.operator
) - Cloud Data Fusion 開發人員 (
roles/datafusion.developer
) - Cloud Data Fusion 編輯器 (
roles/datafusion.editor
) - Cloud Data Fusion 管理員 (
roles/datafusion.admin
)
- Cloud Data Fusion 作業人員 (
如要進一步瞭解如何授予角色,請參閱「管理存取權」。
您或許還可透過其他預先定義的角色取得必要權限。
設定 Git 存放區
如要在 GitHub 中建立 Git 存放區,請按照「建立存放區」一文中的操作說明進行。
如要進一步瞭解 GitHub 和其他版本控制系統中的個人存取權杖,請參閱以下頁面:
將 Git 存放區連結至 Cloud Data Fusion
Cloud Data Fusion 可讓您在每個命名空間的「Source Control Management」分頁中,設定及連結 Git 存放區。如要將命名空間連結至 Git 存放區,請按照下列步驟操作:
控制台
- 在 Cloud Data Fusion Studio 中,按一下 「Menu」。
- 按一下「命名空間管理員」。
- 在「命名空間管理」頁面中,按一下「來源控管管理」分頁標籤。
- 按一下「Link repository」。
輸入下列詳細資訊:
- 供應商:選擇 Git 服務供應商,例如 GitHub 或 GitLab。
- 存放區網址:輸入可存取存放區的網址。GitHub 的存放區網址為
https://github.com/HOST/REPO
。 - 預設分支版本 (選用):輸入 Git 的初始分支版本。這個分支版本可能與在 GitHub 上設定的預設分支版本不同。無論 GitHub 上的預設分支為何,這個分支都會用於同步處理管道。
- 路徑前置字串 (選用):輸入要儲存在 Git 存放區中的管道名稱前置字串。舉例來說,如果管道名稱為
DataFusionQuickStart
,且您指定前置字串為namespaceName
,則管道會儲存在 Git 存放區中,名稱為namespaceName/DataFusionQuickStart
。 - 驗證類型: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
:要連結的存放區網址。使用https
網址,例如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 中,按一下 「Menu」。
- 按一下「命名空間管理員」。
- 在「命名空間管理」頁面中,按一下「來源控管管理」分頁標籤。
- 找出要同步的 Git 存放區,然後按一下「Sync pipelines」。
- 按一下「命名空間管道」分頁標籤。
搜尋並選取要推送至 Git 存放區的管道。
如果最新版本的管道已推送至或從 Git 存放區拉取,已連線至 Git 狀態會顯示
Connected
。如果管道從未推送至 GitHub,則「已連線至 Git」狀態會顯示空白 (-
)。如果您部署已與 Git 存放區同步的較新版本管道,已連線至 Git 狀態會從
Connected
變更為空白 (-
)。按一下「推送至存放區」。
輸入提交訊息,然後按一下「確定」。
推送作業會開始,並顯示訊息,指出所選管道正在推送至遠端存放區。
推送作業順利完成後,系統會顯示成功訊息,指出推送至遠端存放區的管道數量。
如果推送作業失敗,請檢查 GitHub 中的管道,確認是否為最新版本。每個失敗的推送作業都會顯示錯誤訊息。如要查看錯誤的詳細資料,請展開錯誤訊息。
您也可以從 pipeline 設計工作室將個別管道推送至 Git 存放區:
- 在 Cloud Data Fusion Studio 中,按一下 「Menu」。
- 按一下「清單」。
- 按一下要推送至 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 中,按一下 「Menu」。
- 按一下「命名空間管理員」。
- 在「命名空間管理」頁面中,按一下「來源控管管理」分頁標籤。
- 找出要同步的 Git 存放區,然後按一下「Sync pipelines」。
- 按一下「Repository pipelines」分頁標籤。系統會顯示 Git 存放區中儲存的所有管道。
- 搜尋並選取要從 Git 存放區拉取至 Cloud Data Fusion 命名空間的管道。
按一下「從存放區提取」。
拉取作業開始執行,並顯示訊息,指出系統正在從遠端存放區拉取所選管道。Cloud Data Fusion 會在已設定的路徑下尋找 JSON 檔案,並將這些檔案擷取並部署為 Cloud Data Fusion 的管道。
拉取作業完成後,系統會顯示成功訊息,指出從遠端存放區拉取的管道數量。
如果拉取作業失敗,系統會顯示錯誤訊息。如要查看錯誤的詳細資料,請展開錯誤訊息。
您也可以從管道設計工作室,將個別管道從 Git 存放區提取至命名空間:
- 在 Cloud Data Fusion Studio 中,按一下 「Menu」。
- 按一下「清單」。
- 按一下要從 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 中,按一下 「Menu」。
- 按一下「命名空間管理員」。
- 在「命名空間管理」頁面中,按一下「來源控管管理」分頁標籤。
- 針對要刪除的 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 存放區管理管道。