Automatizované publikování pro kontinuální integraci a doručování (CI/CD)

PLATÍ PRO: Azure Data Factory Azure Synapse Analytics

Tip

Vyzkoušejte si službu Data Factory v Microsoft Fabric, řešení pro analýzy typu all-in-one pro podniky. Microsoft Fabric zahrnuje všechno od přesunu dat až po datové vědy, analýzy v reálném čase, business intelligence a vytváření sestav. Přečtěte si, jak začít používat novou zkušební verzi zdarma.

Poznámka:

Synapse Analytics také podporuje CI/CD. Další informace najdete v dokumentaci k CI/CD služby Synapse Analytics.

Přehled

Kontinuální integrace spočívá v automatickém testování všech změn kódové báze. Co nejdříve se průběžné doručování řídí testováním, ke kterému dochází během kontinuální integrace, a nasdílí změny do přípravného nebo produkčního systému.

V Azure Data Factory ci/CD znamená přesun kanálů služby Data Factory z jednoho prostředí, jako je vývoj, testování a produkce, do jiného. Služba Data Factory používá šablony Azure Resource Manageru (šablony ARM) k ukládání konfigurace různých entit služby Data Factory, jako jsou kanály, datové sady a toky dat.

Existují dvě navrhované metody pro zvýšení úrovně datové továrny do jiného prostředí:

  • Automatizované nasazení s využitím integrace služby Data Factory se službou Azure Pipelines
  • Ruční nahrání šablony ARM pomocí integrace uživatelského prostředí služby Data Factory s Azure Resource Managerem

Další informace najdete v tématu Kontinuální integrace a doručování ve službě Azure Data Factory.

Tento článek se zaměřuje na vylepšení průběžného nasazování a funkci automatizovaného publikování pro CI/CD.

Vylepšení průběžného nasazování

Funkce automatizovaného publikování přebírá funkce pro ověření všech a exportu šablon ARM z uživatelského prostředí služby Data Factory a zpřístupňuje logiku prostřednictvím veřejně dostupného balíčku npm @microsoft/azure-data-factory-utilities. Z tohoto důvodu můžete tyto akce aktivovat programově, místo abyste museli přejít do uživatelského rozhraní služby Data Factory a vybrat tlačítko ručně. Díky této možnosti budou vaše kanály CI/CD lépe fungovat jako prostředí pro kontinuální integraci.

Poznámka:

Ujistěte se, že používáte uzel verze 18.x a jeho kompatibilní verzi, abyste se vyhnuli chybám, ke kterým může dojít kvůli nekompatibilitě balíčku se staršími verzemi.

Aktuální tok CI/CD

  1. Každý uživatel provede změny ve svých privátních větvích.
  2. Funkce Push to master není povolená. Uživatelé musí vytvořit žádost o přijetí změn, aby mohli provádět změny.
  3. Uživatelé musí načíst uživatelské rozhraní služby Data Factory a vybrat Publikovat , aby mohli nasadit změny do služby Data Factory a vygenerovat šablony ARM ve větvi publikování.
  4. Kanál verze DevOps je nakonfigurovaný tak, aby vytvořil novou verzi a nasadí šablonu ARM pokaždé, když se do větve publikování odešle nová změna.

Diagram that shows the current CI/CD flow.

Ruční krok

V aktuálním toku CI/CD je uživatelské prostředí zprostředkovatelem pro vytvoření šablony ARM. V důsledku toho musí uživatel přejít do uživatelského rozhraní služby Data Factory a ručně vybrat Publikovat , aby se spustila generování šablon ARM a vyhodí ho do větve publikování.

Nový tok CI/CD

  1. Každý uživatel provede změny ve svých privátních větvích.
  2. Funkce Push to master není povolená. Uživatelé musí vytvořit žádost o přijetí změn, aby mohli provádět změny.
  3. Sestavení kanálu Azure DevOps se aktivuje při každém vytvoření nového potvrzení do hlavního serveru. Ověří prostředky a vygeneruje šablonu ARM jako artefakt, pokud ověření proběhne úspěšně.
  4. Kanál verze DevOps je nakonfigurovaný tak, aby vytvořil novou verzi a nasadil šablonu ARM pokaždé, když je k dispozici nové sestavení.

Diagram that shows the new CI/CD flow.

Co se změnilo?

  • Teď máme proces sestavení, který používá kanál buildu DevOps.
  • Kanál buildu používá balíček NPM nástroje ADFUtilities, který ověří všechny prostředky a vygeneruje šablony ARM. Tyto šablony můžou být jednoduché a propojené.
  • Kanál buildu zodpovídá za ověřování prostředků služby Data Factory a generování šablony ARM místo uživatelského rozhraní služby Data Factory (tlačítko Publikovat ).
  • Definice verze DevOps teď bude místo artefaktu Git využívat tento nový kanál buildu.

Poznámka:

Můžete dál používat existující mechanismus, což je adf_publish větev, nebo můžete použít nový tok. Podporují se obě možnosti.

Přehled balíčku

V balíčku jsou aktuálně k dispozici dva příkazy:

  • Export šablony ARM
  • Ověřit

Export šablony ARM

Spuštěním npm run build export <rootFolder> <factoryId> [outputFolder] exportu šablony ARM použijte prostředky dané složky. Tento příkaz také spustí kontrolu ověření před vygenerováním šablony ARM. Tady je příklad použití skupiny prostředků s názvem testResourceGroup:

npm run build export C:\DataFactories\DevDataFactory /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/testResourceGroup/providers/Microsoft.DataFactory/factories/DevDataFactory ArmTemplateOutput
  • RootFolder je povinné pole, které představuje umístění prostředků služby Data Factory.
  • FactoryId je povinné pole, které představuje ID prostředku služby Data Factory ve formátu /subscriptions/<subId>/resourceGroups/<rgName>/providers/Microsoft.DataFactory/factories/<dfName>.
  • OutputFolder je volitelný parametr, který určuje relativní cestu k uložení vygenerované šablony ARM.

Možnost zastavit nebo spustit pouze aktualizované triggery je nyní obecně dostupná a je sloučena do výše uvedeného příkazu.

Poznámka:

Vygenerovaná šablona ARM se nepublikuje do živé verze továrny. Nasazení by se mělo provést pomocí kanálu CI/CD.

Ověřit

Spuštěním ověřte npm run build validate <rootFolder> <factoryId> všechny prostředky dané složky. Tady je příklad:

npm run build validate C:\DataFactories\DevDataFactory /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/testResourceGroup/providers/Microsoft.DataFactory/factories/DevDataFactory
  • RootFolder je povinné pole, které představuje umístění prostředků služby Data Factory.
  • FactoryId je povinné pole, které představuje ID prostředku služby Data Factory ve formátu /subscriptions/<subId>/resourceGroups/<rgName>/providers/Microsoft.DataFactory/factories/<dfName>.

Vytvoření kanálu Azure

Balíčky npm je možné využívat různými způsoby, ale jedna z hlavních výhod se využívá prostřednictvím služby Azure Pipeline. Při každém sloučení do větve pro spolupráci je možné aktivovat kanál, který nejprve ověří veškerý kód a pak exportuje šablonu ARM do artefaktu sestavení, který může kanál verze využívat. Jak se liší od aktuálního procesu CI/CD, je to, že kanál verze nasměrujete na tento artefakt místo na existující adf_publish větev.

Chcete-li začít, postupujte následovně:

  1. Otevřete projekt Azure DevOps a přejděte na Pipelines. Vyberte Nový kanál.

    Screenshot that shows the New pipeline button.

  2. Vyberte úložiště, do kterého chcete uložit skript YAML kanálu. Doporučujeme ho uložit do složky sestavení ve stejném úložišti vašich prostředků služby Data Factory. Ujistěte se, že v úložišti je soubor package.json , který obsahuje název balíčku, jak je znázorněno v následujícím příkladu:

    {
        "scripts":{
            "build":"node node_modules/@microsoft/azure-data-factory-utilities/lib/index"
        },
        "dependencies":{
            "@microsoft/azure-data-factory-utilities":"^1.0.0"
        }
    } 
    
  3. Vyberte počáteční kanál. Pokud jste nahráli nebo sloučili soubor YAML, jak je znázorněno v následujícím příkladu, můžete na to také přímo odkazovat a upravit ho.

    Screenshot that shows Starter pipeline.

    # 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 temmplate" 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/222f1459-6ebd-4896-82ab-652d5f6883cf/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. Zadejte kód YAML. Jako výchozí bod doporučujeme použít soubor YAML.

  5. Uložte a spusťte. Pokud jste použili YAML, aktivuje se při každé aktualizaci hlavní větve.

Poznámka:

Vygenerované artefakty již obsahují skripty před a po nasazení pro triggery, takže není nutné je přidat ručně. Když ho ale nasadíte, bude potřeba odkazovat na dokumentaci k zastavení a spuštění aktivačních událostí pro spuštění poskytnutého skriptu.

Další informace o kontinuální integraci a doručování ve službě Data Factory: Kontinuální integrace a doručování ve službě Azure Data Factory