Geautomatiseerd publiceren voor continue integratie en levering (CI/CD)

Van toepassing op: Azure Data Factory Azure Synapse Analytics

Aanbeveling

Data Factory in Microsoft Fabric is de volgende generatie van Azure Data Factory, met een eenvoudigere architectuur, ingebouwde AI en nieuwe functies. Als u nieuw bent in gegevensintegratie, begint u met Fabric Data Factory. Bestaande ADF-workloads kunnen upgraden naar Fabric om toegang te krijgen tot nieuwe mogelijkheden voor gegevenswetenschap, realtime analyses en rapportage.

Notitie

Synapse Analytics ondersteunt ook CI/CD. Raadpleeg de synapse Analytics CI/CD-documentatie voor meer informatie.

Overzicht

Continue integratie is de praktijk van het automatisch testen van elke wijziging aan de codebasis. Zo vroeg mogelijk volgt continue levering de tests die plaatsvinden tijdens continue integratie en pusht wijzigingen in een faserings- of productiesysteem.

In Azure Data Factory betekent CI/CD het verplaatsen van Data Factory-pijplijnen van de ene omgeving, zoals ontwikkeling, testen en productie, naar een andere. Data Factory maakt gebruik van Azure Resource Manager-sjablonen (ARM-sjablonen) voor het opslaan van de configuratie van uw verschillende Data Factory-entiteiten, zoals pijplijnen, gegevenssets en gegevensstromen.

Er zijn twee voorgestelde methoden om een data factory te promoveren naar een andere omgeving:

  • Geautomatiseerde implementatie door gebruik te maken van de integratie van Data Factory met Azure-pipelines.
  • Handmatig een ARM-sjabloon uploaden met behulp van de integratie van data factory-gebruikerservaring met Azure Resource Manager.

Zie Continuous integration and delivery in Azure Data Factory voor meer informatie.

Dit artikel is gericht op de verbeteringen voor continue implementatie en de functie voor geautomatiseerd publiceren voor CI/CD.

Verbeteringen voor continue implementatie

De functie voor automatisch publiceren maakt gebruik van de functies alle sjablonen valideren en ARM-sjabloon exporteren uit de Gebruikerservaring van Data Factory en maakt de logica bruikbaar via een openbaar beschikbaar NPM-pakket @microsoft/azure-data-factory-utilities. Daarom kunt u deze acties programmatisch activeren in plaats van naar de gebruikersinterface van Data Factory te gaan en handmatig een knop te selecteren. Deze mogelijkheid geeft uw CI/CD-pijplijnen een realistischere continue integratie-ervaring.

Notitie

Zorg ervoor dat je Node.js versie 20.x en de compatibele versie daarvan gebruikt om fouten te voorkomen die kunnen optreden door incompatibiliteit met oudere versies in het pakket.

Huidige CI/CD-stroom

  1. Elke gebruiker brengt wijzigingen aan in zijn of haar privé-branches.
  2. Push to main is niet toegestaan. Gebruikers moeten een pull-aanvraag maken om wijzigingen aan te brengen.
  3. Gebruikers moeten de gebruikersinterface van Data Factory laden en Publiceren selecteren om wijzigingen in Data Factory te implementeren en de ARM-sjablonen in de publicatiebranch te genereren.
  4. De DevOps Release-pijplijn is geconfigureerd voor het maken van een nieuwe release en het implementeren van de ARM-sjabloon telkens wanneer een nieuwe wijziging naar de publicatiebranch wordt gepusht.

Diagram met de huidige CI/CD-stroom.

Handmatige stap

In de huidige CI/CD-stroom fungeert de gebruikerservaring als intermediair bij het maken van de ARM-sjabloon. Als gevolg hiervan moet een gebruiker naar de Data Factory-interface gaan en handmatig Publiceren selecteren om het genereren van ARM templates te starten en deze in de publish branch te plaatsen.

De nieuwe CI/CD-stroom

  1. Elke gebruiker brengt wijzigingen aan in zijn of haar privé-branches.
  2. Push to main is niet toegestaan. Gebruikers moeten een pull-aanvraag maken om wijzigingen aan te brengen.
  3. De Azure DevOps pipeline build wordt geactiveerd telkens wanneer een nieuwe commit naar main wordt gemaakt. Er wordt een ARM-sjabloon als artefact gegenereerd als de validatie van de resources slaagt.
  4. De DevOps Release-pijplijn is geconfigureerd voor het maken van een nieuwe release en het implementeren van de ARM-sjabloon telkens wanneer er een nieuwe build beschikbaar is.

Diagram met de nieuwe CI/CD-stroom.

Wat is er veranderd?

  • Je hebt nu een buildproces dat een DevOps build-pipeline gebruikt.
  • De build-pipeline gebruikt het ADFUtilities (@microsoft/azure-data-factory-utilities) npm-pakket, dat alle resources valideert en de ARM-templates genereert. Deze sjablonen kunnen enkel en gekoppeld zijn.
  • De build-pijplijn valideert Data Factory-bronnen en genereert de ARM-template in plaats van de Data Factory-gebruikersinterface (Publiceren-knop ).
  • De DevOps-releasedefinitie gebruikt nu deze nieuwe buildpipeline in plaats van het Git-artefact.

Notitie

U kunt het bestaande mechanisme, de adf_publish vertakking, blijven gebruiken of u kunt het nieuwe proces gebruiken. Beide worden ondersteund.

Overzicht van pakket

Er zijn momenteel twee opdrachten beschikbaar in het pakket:

  • Een ARM-sjabloon exporteren
  • Valideren

Een ARM-sjabloon exporteren

Voer deze opdracht uit npm run build export <rootFolder> <factoryId> [outputFolder] om de ARM-sjabloon te exporteren met behulp van de resources van een bepaalde map. Dit commando voert ook een validatiecontrole uit voordat het ARM-sjabloon wordt gegenereerd. Hier is een voorbeeld dat een resourcegroep gebruikt genaamd testResourceGroup:

npm run build export C:\DataFactories\DevDataFactory /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/testResourceGroup/providers/Microsoft.DataFactory/factories/DevDataFactory ArmTemplateOutput
  • RootFolder is een verplicht veld dat aangeeft waar de Data Factory-resources zich bevinden.
  • FactoryId is een verplicht veld dat de Data Factory-resource-id vertegenwoordigt in de indeling /subscriptions/<subId>/resourceGroups/<rgName>/providers/Microsoft.DataFactory/factories/<dfName>.
  • OutputFolder is een optionele parameter waarmee het relatieve pad wordt opgegeven om de gegenereerde ARM-sjabloon op te slaan.

De mogelijkheid om alleen de bijgewerkte triggers te stoppen/starten is nu algemeen beschikbaar en wordt samengevoegd met het voorgaande commando.

Notitie

De gegenereerde ARM-sjabloon wordt niet gepubliceerd naar de liveversie van de factory. Implementatie moet worden uitgevoerd met behulp van een CI/CD-pijplijn.

Valideren

Voer deze opdracht uit npm run build validate <rootFolder> <factoryId> om alle resources van een bepaalde map te valideren. Hier volgt een voorbeeld:

npm run build validate C:\DataFactories\DevDataFactory /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/testResourceGroup/providers/Microsoft.DataFactory/factories/DevDataFactory
  • RootFolder is een verplicht veld dat aangeeft waar de Data Factory-resources zich bevinden.
  • FactoryId is een verplicht veld dat de Data Factory-resource-id vertegenwoordigt in de indeling /subscriptions/<subId>/resourceGroups/<rgName>/providers/Microsoft.DataFactory/factories/<dfName>.

Een Azure-pijplijn maken

Hoewel npm-pakketten op verschillende manieren kunnen worden verbruikt, is een van de belangrijkste voordelen dat ze via Azure-pipelines worden verbruikt. Bij elke merge in je samenwerkingsbranch kan een pipeline worden geactiveerd die eerst alle code valideert en vervolgens de ARM-template exporteert naar een build-artefact dat door een release-pipeline kan worden gebruikt. Wat het verschilt van het huidige CI/CD-proces is dat je je release-pipeline richt op dit artefact in plaats van op de bestaande adf_publish branch.

Volg deze stappen om aan de slag te gaan:

  1. Open een Azure DevOps project en ga naar Pipelines. Selecteer Nieuwe pijplijn.

    Schermopname van de knop Nieuwe pijplijn.

  2. Selecteer de opslagplaats waar u het YAML-script voor de pijplijn wilt opslaan. Sla het op in een buildmap in dezelfde repository als je Data Factory-bronnen. Zorg ervoor dat er een package.json-bestand in de opslagplaats staat die de pakketnaam bevat, zoals wordt weergegeven in het volgende voorbeeld:

    {
        "scripts":{
            "build":"node node_modules/@microsoft/azure-data-factory-utilities/lib/index"
        },
        "dependencies":{
            "@microsoft/azure-data-factory-utilities":"^1.0.0"
        }
    } 
    
  3. Selecteer Starter-pijplijn. Als u het YAML-bestand hebt geüpload of samengevoegd, zoals in het volgende voorbeeld wordt weergegeven, kunt u dat ook rechtstreeks aanwijzen en bewerken.

    Schermopname van Starter-pijplijn.

    # 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: '20.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. Voer uw YAML-code in. Gebruik het YAML-bestand als uitgangspunt.

  5. Opslaan en uitvoeren. Als u de YAML hebt gebruikt, wordt deze telkens geactiveerd wanneer de hoofdbranch wordt bijgewerkt. Bevestig dat de run slaagt en het ArmTemplates artefact in de gepubliceerde artefacten van de pijplijn oplevert.

Notitie

De gegenereerde artefacten bevatten al pre- en post-deployment scripts voor de triggers, dus je hoeft ze niet handmatig toe te voegen. Maar wanneer je deployt, moet je nog steeds de documentatie raadplegen over het stoppen en starten van triggers om het meegeleverde script uit te voeren.

Lees meer over continue integratie en levering in Data Factory: Continue integratie en levering in Azure Data Factory.