共用方式為


持續整合和傳遞的自動發佈(CI/CD)

適用於:Azure Data Factory Azure Synapse Analytics

提示

試用 Microsoft Fabric 中的 Data Factory,這是適用於企業的全方位分析解決方案。 Microsoft Fabric 涵蓋從資料移動到資料科學、即時分析、商業智慧和報告的所有項目。 了解如何免費開始新的試用

注意

Synapse Analytics 也支援 CI/CD。 如需詳細資訊, 請參閱 Synapse Analytics CI/CD 檔

概觀

持續整合是指進行相關實作,以自動測試對您的程式碼基底所做的每項變更。 盡早在持續整合期間執行測試,並將變更推送至暫存或生產系統後,就會進行持續傳遞。

在 Azure Data Factory 中,CI/CD 表示將 Data Factory 管線從開發、測試和生產環境等環境移至另一個環境。 Data Factory 使用 Azure Resource Manager 範本 (ARM 範本) 來儲存各種 Data Factory 實體 (例如管線、資料集和資料流程) 的設定。

有兩個建議的方法可將資料處理站升級至另一個環境:

  • 使用 Data Factory 與 Azure Pipelines 的整合進行自動化部署。
  • 使用 Data Factory 使用者體驗與 Azure Resource Manager 的整合,以手動上傳 ARM 範本。

如需詳細資訊,請參閱 Azure Data Factory 中的持續整合和傳遞

本文著重於持續改善部署,以及 CI/CD 的自動發佈功能。

持續改善部署

自動發佈功能會從 Data Factory 使用者體驗中取得「驗證全部」和「匯出 ARM 範本」功能,並透過公開可用的 npm 套件 @microsoft/azure-data-factory-utilities,讓邏輯可供取用。 基於此原因,您可以使用程式設計方式來觸發這些動作,而不需要移至 Data Factory UI,並手動選取按鈕。 這項功能可讓您的 CI/CD 管線 truer 持續整合體驗。

注意

請務必使用節點 18.x 版及其相容版本,以避免因為套件與舊版不相容而可能發生的錯誤。

目前 CI/CD 流程

  1. 每位使用者都會在其私人分支中進行變更。
  2. 不允許推送至 master。 使用者必須建立提取要求,才能進行變更。
  3. 使用者必須載入 Data Factory UI,然後選取 [發佈] 將變更部署至 Data Factory,並在發佈分支中產生 ARM 範本。
  4. DevOps 發行版本管線設定為建立新的發行版本,並在每次將新的變更推送至發佈分支時部署 ARM 範本。

顯示目前 CI/CD 流程的圖表。

手動步驟

在目前的 CI/CD 流程中,使用者體驗是建立 ARM 範本的媒介。 因此,使用者必須移至 Data Factory UI,然後手動選取 [發佈] 以啟動 ARM 範本產生,並將該範本放在發佈分支中。

新的 CI/CD 流程

  1. 每位使用者都會在其私人分支中進行變更。
  2. 不允許推送至 master。 使用者必須建立提取要求,才能進行變更。
  3. 每次對 master 進行新的認可時,都會觸發所建置的 Azure DevOps 管線。 這會驗證資源,並在驗證成功時產生 ARM 範本以作為成品。
  4. DevOps 發行版本管線設定為建立新發行版本,並在每次有新組建可用時部署 ARM 範本。

顯示新 CI/CD 流程的圖表。

變更的項目為何?

  • 我們現在有使用 DevOps 建置管線的建置程序。
  • 建置管線會使用 ADFUtilities NPM 套件,而此套件會驗證所有資源並產生 ARM 範本。 這些範本可以是單一並已連結。
  • 建置管線負責驗證 Data Factory 資源,並產生 ARM 範本,而不是 Data Factory UI ([發佈] 按鈕)。
  • DevOps 發行定義現在會取用這個新的建置管線,而不是 Git 成品。

注意

您可以繼續使用現有機制 (即 adf_publish 分支),也可以使用新的流程。 兩者都支援。

套件概觀

套件中目前提供兩個命令:

  • 匯出 ARM 範本
  • Validate

匯出 ARM 範本

執行 npm run build export <rootFolder> <factoryId> [outputFolder],以使用所指定資料夾的資源來匯出 ARM 範本。 此命令也會在產生 ARM 範本之前執行驗證檢查。 以下是使用名為 testResourceGroup 之資源群組的範例:

npm run build export C:\DataFactories\DevDataFactory /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/testResourceGroup/providers/Microsoft.DataFactory/factories/DevDataFactory ArmTemplateOutput
  • RootFolder 是必要欄位,可代表 Data Factory 資源所在的位置。
  • FactoryId 是必要欄位,可代表格式為 /subscriptions/<subId>/resourceGroups/<rgName>/providers/Microsoft.DataFactory/factories/<dfName> 的 Data Factory 資源識別碼。
  • OutputFolder 是選用參數,可指定要儲存所產生 ARM 範本的相對路徑。

僅停止/啟動更新觸發程序的功能現已正式推出,並合併至上述命令。

注意

產生的 ARM 範本不會發佈至處理站的即時版本。 部署應該使用 CI/CD 管線來完成。

Validate

執行 npm run build validate <rootFolder> <factoryId> 以驗證所指定資料夾的所有資源。 以下是範例:

npm run build validate C:\DataFactories\DevDataFactory /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/testResourceGroup/providers/Microsoft.DataFactory/factories/DevDataFactory
  • RootFolder 是必要欄位,可代表 Data Factory 資源所在的位置。
  • FactoryId 是必要欄位,可代表格式為 /subscriptions/<subId>/resourceGroups/<rgName>/providers/Microsoft.DataFactory/factories/<dfName> 的 Data Factory 資源識別碼。

建立 Azure 管線

雖然可以透過各種方式來使用 npm 套件,但其中一個主要優點是透過 Azure Pipeline 予以使用。 每次合併至您的共同作業分支時,可以觸發管線,而這會先驗證所有程式碼,然後將 ARM 範本匯出至發行版本管線可使用的組建成品。 其與目前 CI/CD 程序的差異在於您將「在此成品指向發行管線,而非現有 adf_publish 分支」

遵循下列步驟以開始使用:

  1. 開啟 Azure DevOps 專案,然後移至 [Pipelines]。 選取 [新增管線]

    顯示 [新增管線] 按鈕的螢幕快照。

  2. 選取您想要在其中儲存管線 YAML 指令碼的存放庫。 建議您將其儲存至 Data Factory 資源的相同存放庫中的組建資料夾。 請確定存放庫中有包含套件名稱的 package.json 檔案,如下列範例所示:

    {
        "scripts":{
            "build":"node node_modules/@microsoft/azure-data-factory-utilities/lib/index"
        },
        "dependencies":{
            "@microsoft/azure-data-factory-utilities":"^1.0.0"
        }
    } 
    
  3. 選取 [入門管線]。 如果您已上傳或合併 YAML 檔案 (如下列範例所示),則也可以直接指向該檔案並進行編輯。

    顯示入門管線的螢幕快照。

    # Sample YAML file to validate and export an ARM template into a build artifact
    # Requires a package.json file located in the target repository
    
    trigger:
    - main #collaboration branch
    
    pool:
      vmImage: 'ubuntu-latest'
    
    steps:
    
    # Installs Node and the npm packages saved in your package.json file in the build
    
    - task: UseNode@1
      inputs:
        version: '18.x'
      displayName: 'Install Node.js'
    
    - task: Npm@1
      inputs:
        command: 'install'
        workingDir: '$(Build.Repository.LocalPath)/<folder-of-the-package.json-file>' #replace with the package.json folder
        verbose: true
      displayName: 'Install npm package'
    
    # Validates all of the Data Factory resources in the repository. You'll get the same validation errors as when "Validate All" is selected.
    # Enter the appropriate subscription and name for the source factory. Either of the "Validate" or "Validate and Generate ARM template" options are required to perform validation. Running both is unnecessary.
    
    - task: Npm@1
      inputs:
        command: 'custom'
        workingDir: '$(Build.Repository.LocalPath)/<folder-of-the-package.json-file>' #replace with the package.json folder
        customCommand: 'run build validate $(Build.Repository.LocalPath)/<Root-folder-from-Git-configuration-settings-in-ADF> /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/<Your-ResourceGroup-Name>/providers/Microsoft.DataFactory/factories/<Your-Factory-Name>'
      displayName: 'Validate'
    
    # Validate and then generate the ARM template into the destination folder, which is the same as selecting "Publish" from the UX.
    # The ARM template generated isn't published to the live version of the factory. Deployment should be done by using a CI/CD pipeline. 
    
    - task: Npm@1
      inputs:
        command: 'custom'
        workingDir: '$(Build.Repository.LocalPath)/<folder-of-the-package.json-file>' #replace with the package.json folder
        customCommand: 'run build export $(Build.Repository.LocalPath)/<Root-folder-from-Git-configuration-settings-in-ADF> /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/<Your-ResourceGroup-Name>/providers/Microsoft.DataFactory/factories/<Your-Factory-Name> "ArmTemplate"'
    #For using preview that allows you to only stop/ start triggers that are modified, please comment out the above line and uncomment the below line. Make sure the package.json contains the build-preview command. 
     #customCommand: 'run build-preview export $(Build.Repository.LocalPath) /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/GartnerMQ2021/providers/Microsoft.DataFactory/factories/Dev-GartnerMQ2021-DataFactory "ArmTemplate"'
      displayName: 'Validate and Generate ARM template'
    
    # Publish the artifact to be used as a source for a release pipeline.
    
    - task: PublishPipelineArtifact@1
      inputs:
        targetPath: '$(Build.Repository.LocalPath)/<folder-of-the-package.json-file>/ArmTemplate' #replace with the package.json folder
        artifact: 'ArmTemplates'
        publishLocation: 'pipeline'
    
  4. 輸入 YAML 代碼。 建議您使用 YAML 檔案作為起點。

  5. 儲存並執行。 如果您已使用 YAML,則會在每次更新 main 分支時予以觸發。

注意

產生的成品已經包含觸發程序的部署前和部署後指令碼,因此不需要手動加以新增。 不過,部署時,仍然需要參考停止和啟動觸發程序的文件,以執行提供的指令碼。

深入了解 Data Factory 中持續整合和傳遞的相關資訊:Azure Data Factory中的持續整合和傳遞