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

本頁面說明如何透過 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

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

控制台

  1. 在 Cloud Data Fusion Studio 中,按一下 「Menu」
  2. 按一下「命名空間管理員」
  3. 在「命名空間管理」頁面中,按一下「來源控管管理」分頁標籤。
  4. 按一下「Link repository」
  5. 輸入下列詳細資訊:

    • 供應商:選擇 Git 服務供應商,例如 GitHubGitLab
    • 存放區網址:輸入可存取存放區的網址。GitHub 的存放區網址為 https://github.com/HOST/REPO
    • 預設分支版本 (選用):輸入 Git 的初始分支版本。這個分支版本可能與在 GitHub 上設定的預設分支版本不同。無論 GitHub 上的預設分支為何,這個分支都會用於同步處理管道。
    • 路徑前置字串 (選用):輸入要儲存在 Git 存放區中的管道名稱前置字串。舉例來說,如果管道名稱為 DataFusionQuickStart,且您指定前置字串為 namespaceName,則管道會儲存在 Git 存放區中,名稱為 namespaceName/DataFusionQuickStart
    • 驗證類型: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 網址,例如 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 中,按一下 「Menu」
  2. 按一下「命名空間管理員」
  3. 在「命名空間管理」頁面中,按一下「來源控管管理」分頁標籤。
  4. 找出要同步的 Git 存放區,然後按一下「Sync pipelines」
  5. 按一下「命名空間管道」分頁標籤。
  6. 搜尋並選取要推送至 Git 存放區的管道。

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

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

  7. 按一下「推送至存放區」

  8. 輸入提交訊息,然後按一下「確定」

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

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

推送作業順利完成後,系統會顯示成功訊息,指出推送至遠端存放區的管道數量。

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

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

  1. 在 Cloud Data Fusion Studio 中,按一下 「Menu」
  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 中,按一下 「Menu」
  2. 按一下「命名空間管理員」
  3. 在「命名空間管理」頁面中,按一下「來源控管管理」分頁標籤。
  4. 找出要同步的 Git 存放區,然後按一下「Sync pipelines」
  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 中,按一下 「Menu」
  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 中,按一下 「Menu」
  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。

後續步驟