Dela via


Automatiserad publicering för kontinuerlig integrering och leverans (CI/CD)

GÄLLER FÖR: Azure Data Factory Azure Synapse Analytics

Dricks

Prova Data Factory i Microsoft Fabric, en allt-i-ett-analyslösning för företag. Microsoft Fabric omfattar allt från dataflytt till datavetenskap, realtidsanalys, business intelligence och rapportering. Lär dig hur du startar en ny utvärderingsversion kostnadsfritt!

Kommentar

Synapse Analytics stöder även CI/CD. Mer information finns i Synapse Analytics CI/CD-dokumentationen .

Översikt

Kontinuerlig integrering är en metod som testar varje ändring av kodbasen automatiskt. Så tidigt som möjligt följer kontinuerlig leverans testningen som sker under kontinuerlig integrering och skickar ändringar till ett mellanlagrings- eller produktionssystem.

I Azure Data Factory innebär CI/CD att flytta Data Factory-pipelines från en miljö, till exempel utveckling, testning och produktion, till en annan. Data Factory använder Azure Resource Manager-mallar (ARM-mallar) för att lagra konfigurationen av dina olika Data Factory-entiteter, till exempel pipelines, datauppsättningar och dataflöden.

Det finns två föreslagna metoder för att flytta upp en datafabrik till en annan miljö:

  • Automatiserad distribution med hjälp av integrering av Data Factory med Azure Pipelines.
  • Ladda upp en ARM-mall manuellt med hjälp av Integrering av Data Factory-användarupplevelse med Azure Resource Manager.

Mer information finns i Kontinuerlig integrering och leverans i Azure Data Factory.

Den här artikeln fokuserar på förbättringar av kontinuerlig distribution och den automatiserade publiceringsfunktionen för CI/CD.

Förbättringar av kontinuerlig distribution

Den automatiserade publiceringsfunktionen tar funktionerna Verifiera alla och Exportera ARM-mallar från Data Factory-användarupplevelsen och gör logiken förbrukningsbar via ett offentligt tillgängligt npm-paket @microsoft/azure-data-factory-utilities. Därför kan du programmatiskt utlösa dessa åtgärder i stället för att behöva gå till Data Factory-användargränssnittet och välja en knapp manuellt. Med den här funktionen får dina CI/CD-pipelines en mer sann kontinuerlig integreringsupplevelse.

Kommentar

Se till att använda nodversionen 18.x och dess kompatibla version för att undvika fel som kan inträffa på grund av paketkompatibilitet med äldre versioner.

Aktuellt CI/CD-flöde

  1. Varje användare gör ändringar i sina privata grenar.
  2. Push-överföring till original tillåts inte. Användarna måste skapa en pull-begäran för att göra ändringar.
  3. Användarna måste läsa in användargränssnittet för Data Factory och välja Publicera för att distribuera ändringar till Data Factory och generera ARM-mallarna i publiceringsgrenen.
  4. DevOps-versionspipelinen är konfigurerad för att skapa en ny version och distribuera ARM-mallen varje gång en ny ändring skickas till publiceringsgrenen.

Diagram som visar det aktuella CI/CD-flödet.

Manuellt steg

I det aktuella CI/CD-flödet är användarupplevelsen mellanhanden för att skapa ARM-mallen. Därför måste en användare gå till Data Factory-användargränssnittet och manuellt välja Publicera för att starta ARM-mallgenereringen och släppa den i publiceringsgrenen.

Det nya CI/CD-flödet

  1. Varje användare gör ändringar i sina privata grenar.
  2. Push-överföring till original tillåts inte. Användarna måste skapa en pull-begäran för att göra ändringar.
  3. Azure DevOps-pipelineversionen utlöses varje gång en ny incheckning görs till huvudservern. Den validerar resurserna och genererar en ARM-mall som en artefakt om valideringen lyckas.
  4. DevOps-versionspipelinen är konfigurerad för att skapa en ny version och distribuera ARM-mallen varje gång en ny version är tillgänglig.

Diagram som visar det nya CI/CD-flödet.

Vad har ändrats?

  • Nu har vi en byggprocess som använder en DevOps-byggpipeline.
  • Bygg-pipelinen använder NPM-paketet ADFUtilities, som verifierar alla resurser och genererar ARM-mallarna. Dessa mallar kan vara enkla och länkade.
  • Bygg-pipelinen ansvarar för att verifiera Data Factory-resurser och generera ARM-mallen i stället för Data Factory-användargränssnittet (knappen Publicera ).
  • DevOps-versionsdefinitionen använder nu den här nya bygg-pipelinen i stället för Git-artefakten.

Kommentar

Du kan fortsätta att använda den befintliga mekanismen, som är grenen adf_publish , eller så kan du använda det nya flödet. Båda stöds.

Paketöversikt

Två kommandon är för närvarande tillgängliga i paketet:

  • Exportera ARM-mall
  • Validera

Exportera ARM-mall

Kör npm run build export <rootFolder> <factoryId> [outputFolder] för att exportera ARM-mallen med hjälp av resurserna i en viss mapp. Det här kommandot kör också en valideringskontroll innan ARM-mallen genereras. Här är ett exempel med hjälp av en resursgrupp med namnet testResourceGroup:

npm run build export C:\DataFactories\DevDataFactory /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/testResourceGroup/providers/Microsoft.DataFactory/factories/DevDataFactory ArmTemplateOutput
  • RootFolder är ett obligatoriskt fält som representerar var Data Factory-resurserna finns.
  • FactoryId är ett obligatoriskt fält som representerar datafabrikens resurs-ID i formatet /subscriptions/<subId>/resourceGroups/<rgName>/providers/Microsoft.DataFactory/factories/<dfName>.
  • OutputFolder är en valfri parameter som anger den relativa sökvägen för att spara den genererade ARM-mallen.

Möjligheten att bara stoppa/starta de uppdaterade utlösarna är nu allmänt tillgänglig och slås samman med kommandot som visas ovan.

Kommentar

ARM-mallen som genereras publiceras inte i den aktiva versionen av fabriken. Distributionen bör utföras med hjälp av en CI/CD-pipeline.

Validera

Kör npm run build validate <rootFolder> <factoryId> för att verifiera alla resurser i en viss mapp. Här är ett exempel:

npm run build validate C:\DataFactories\DevDataFactory /subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/testResourceGroup/providers/Microsoft.DataFactory/factories/DevDataFactory
  • RootFolder är ett obligatoriskt fält som representerar var Data Factory-resurserna finns.
  • FactoryId är ett obligatoriskt fält som representerar datafabrikens resurs-ID i formatet /subscriptions/<subId>/resourceGroups/<rgName>/providers/Microsoft.DataFactory/factories/<dfName>.

Skapa en Azure-pipeline

NPM-paket kan användas på olika sätt, men en av de främsta fördelarna används via Azure Pipeline. Vid varje sammanslagning till din samarbetsgren kan en pipeline utlösas som först validerar all kod och sedan exporterar ARM-mallen till en byggartefakt som kan användas av en versionspipeline. Hur den skiljer sig från den aktuella CI/CD-processen är att du kommer att peka versionspipelinen på den här artefakten i stället för den befintliga adf_publish grenen.

Följ dessa steg för att komma igång:

  1. Öppna ett Azure DevOps-projekt och gå till Pipelines. Välj Ny pipeline.

    Skärmbild som visar knappen Ny pipeline.

  2. Välj den lagringsplats där du vill spara YAML-skriptet för pipelinen. Vi rekommenderar att du sparar den i en byggmapp på samma lagringsplats för dina Data Factory-resurser. Kontrollera att det finns en package.json fil på lagringsplatsen som innehåller paketnamnet, som du ser i följande exempel:

    {
        "scripts":{
            "build":"node node_modules/@microsoft/azure-data-factory-utilities/lib/index"
        },
        "dependencies":{
            "@microsoft/azure-data-factory-utilities":"^1.0.0"
        }
    } 
    
  3. Välj Startpipeline. Om du har laddat upp eller sammanfogat YAML-filen, som du ser i följande exempel, kan du också peka direkt på den och redigera den.

    Skärmbild som visar Startpipeline.

    # 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. Ange DIN YAML-kod. Vi rekommenderar att du använder YAML-filen som utgångspunkt.

  5. Spara och kör. Om du använde YAML utlöses den varje gång huvudgrenen uppdateras.

Kommentar

De genererade artefakterna innehåller redan för- och efterdistributionsskript för utlösarna så det är inte nödvändigt att lägga till dessa manuellt. Men när du distribuerar en skulle fortfarande behöva referera till dokumentationen om att stoppa och starta utlösare för att köra det angivna skriptet.

Läs mer om kontinuerlig integrering och leverans i Data Factory: Kontinuerlig integrering och leverans i Azure Data Factory.