Share via


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

VAN TOEPASSING OP: Azure Data Factory Azure Synapse Analytics

Tip

Probeer Data Factory uit in Microsoft Fabric, een alles-in-één analyseoplossing voor ondernemingen. Microsoft Fabric omvat alles, van gegevensverplaatsing tot gegevenswetenschap, realtime analyses, business intelligence en rapportage. Meer informatie over het gratis starten van een nieuwe proefversie .

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 Arm-sjablonen (Azure Resource Manager) 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 met behulp 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 Continue integratie en levering 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 zorgt voor een meer realistische continue-integratie-ervaring voor uw CI/CD-pijplijnen.

Notitie

Zorg ervoor dat u de knooppuntversie 18.x en de bijbehorende compatibele versie gebruikt om fouten te voorkomen die kunnen optreden als gevolg van incompatibiliteit van pakketten met oudere versies.

Huidige CI/CD-stroom

  1. Elke gebruiker brengt wijzigingen aan in hun privé-vertakkingen.
  2. Pushen naar master 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 that shows the current CI/CD flow.

Handmatige stap

In de huidige CI/CD-stroom is de gebruikerservaring de intermediair om de ARM-sjabloon te maken. Als gevolg hiervan moet een gebruiker naar de gebruikersinterface van Data Factory gaan en handmatig Publiceren selecteren om het genereren van arm-sjablonen te starten en neer te zetten in de publicatievertakking.

De nieuwe CI/CD-stroom

  1. Elke gebruiker brengt wijzigingen aan in hun privé-vertakkingen.
  2. Pushen naar master is niet toegestaan. Gebruikers moeten een pull-aanvraag maken om wijzigingen aan te brengen.
  3. De Build van de Azure DevOps-pijplijn wordt telkens geactiveerd wanneer er een nieuwe doorvoering wordt doorgevoerd in de master. De resources worden gevalideerd en er wordt een ARM-sjabloon gegenereerd als een artefact als de validatie 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 that shows the new CI/CD flow.

Wat is er veranderd?

  • We hebben nu een buildproces dat gebruikmaakt van een DevOps-build-pijplijn.
  • De build-pijplijn maakt gebruik van het NPM-pakket ADFUtilities, waarmee alle resources worden gevalideerd en de ARM-sjablonen worden gegenereerd. Deze sjablonen kunnen enkel en gekoppeld zijn.
  • De build-pijplijn is verantwoordelijk voor het valideren van Data Factory-resources en het genereren van de ARM-sjabloon in plaats van de Data Factory-gebruikersinterface (knop Publiceren ).
  • De DevOps-releasedefinitie gebruikt nu deze nieuwe build-pijplijn in plaats van het Git-artefact.

Notitie

U kunt het bestaande mechanisme, de adf_publish vertakking, blijven gebruiken of u kunt de nieuwe stroom 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. Met deze opdracht wordt ook een validatiecontrole uitgevoerd voordat de ARM-sjabloon wordt gegenereerd. Hier volgt een voorbeeld met behulp van een resourcegroep met de naam 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 in de indeling /subscriptions/<subId>/resourceGroups/<rgName>/providers/Microsoft.DataFactory/factories/<dfName>vertegenwoordigt.
  • 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 de bovenstaande opdracht.

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 in de indeling /subscriptions/<subId>/resourceGroups/<rgName>/providers/Microsoft.DataFactory/factories/<dfName>vertegenwoordigt.

Een Azure-pijplijn maken

Hoewel npm-pakketten op verschillende manieren kunnen worden gebruikt, wordt een van de belangrijkste voordelen gebruikt via Azure Pipeline. Bij elke samenvoeging in uw samenwerkingsbranch kan een pijplijn worden geactiveerd die eerst alle code valideert en vervolgens de ARM-sjabloon exporteert naar een build-artefact dat kan worden gebruikt door een release-pijplijn. Hoe het verschilt van het huidige CI/CD-proces, is dat u uw release-pijplijn op dit artefact in plaats van de bestaande adf_publish vertakking aanwijst.

Volg deze stappen om aan de slag te gaan:

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

    Screenshot that shows the New pipeline button.

  2. Selecteer de opslagplaats waar u het YAML-script voor de pijplijn wilt opslaan. U wordt aangeraden deze op te slaan in een buildmap in dezelfde opslagplaats van uw Data Factory-resources. 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.

    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. Voer uw YAML-code in. U wordt aangeraden het YAML-bestand als uitgangspunt te gebruiken.

  5. Opslaan en uitvoeren. Als u de YAML hebt gebruikt, wordt deze telkens geactiveerd wanneer de hoofdbranch wordt bijgewerkt.

Notitie

De gegenereerde artefacten bevatten al pre- en post-implementatiescripts voor de triggers, zodat het niet nodig is om deze handmatig toe te voegen. Wanneer u een implementatie uitvoert, moet u echter nog steeds verwijzen naar de documentatie over het stoppen en starten van triggers om het opgegeven script uit te voeren.

Meer informatie over continue integratie en levering in Data Factory: Continue integratie en levering in Azure Data Factory.