Azure DevOps-taak voor Azure Data Explorer

Azure DevOps Services biedt ontwikkelhulpprogramma's voor samenwerking, zoals pijplijnen met hoge prestaties, gratis privé-Git-opslagplaatsen, configureerbare kanbanborden en uitgebreide geautomatiseerde en continue testmogelijkheden. Azure Pipelines is een Azure DevOps-mogelijkheid waarmee u CI/CD kunt beheren om uw code te implementeren met pijplijnen met hoge prestaties die werken met elke taal, elk platform en elke cloud. Azure Data Explorer - Pijplijnhulpprogramma's is de Azure Pipelines-taak waarmee u releasepijplijnen kunt maken en uw databasewijzigingen kunt implementeren in uw Azure Data Explorer-databases. Het is gratis beschikbaar in Visual Studio Marketplace. Deze extensie omvat drie basistaken:

  • Azure Data Explorer-opdracht: Beheer-opdrachten uitvoeren op een Azure Data Explorer-cluster

  • Azure Data Explorer-query: query's uitvoeren op een Azure Data Explorer-cluster en de resultaten parseren

  • Azure Data Explorer Query Server Gate - Taak zonder agent naar Gate releases, afhankelijk van het queryresultaat

    Taaktypen.

In dit document wordt een eenvoudig voorbeeld beschreven van het gebruik van de taak Azure Data Explorer - Pijplijnhulpprogramma's om uw schemawijzigingen in uw database te implementeren. Raadpleeg de Documentatie van Azure DevOps voor volledige CI/CD-pijplijnen.

Vereisten

Uw inhoud voorbereiden voor release

Er zijn drie manieren om beheeropdrachten uit te voeren voor een cluster in een taak.

Opties voor opdrachtbronbeheer.

  • Gebruik een zoekpatroon om meerdere opdrachtbestanden op te halen uit een lokale agentmap (buildbronnen of release-artefacten)

    Optie lokale map.

  • Opdrachten inline schrijven

    Optie voor inlineopdracht.

  • Geef een bestandspad op om opdrachtbestanden rechtstreeks uit git-broncodebeheer op te halen (aanbevolen)

    Optie Git-bestanden.

    Maak de volgende voorbeeldmappen (Functies, Beleid, Tabellen) in uw Git-opslagplaats. Kopieer de bestanden van hieruit naar de respectieve mappen zoals hieronder wordt weergegeven en voer de wijzigingen door. De voorbeeldbestanden worden geleverd om de volgende werkstroom uit te voeren.

    Mappen maken voor de opslagplaats.

    Tip

    Wanneer u uw eigen werkstroom maakt, raden we u aan uw code idempotent te maken. Gebruik .create-merge table bijvoorbeeld in plaats van .create tableen gebruik .create-or-alter functie in plaats van .create functie.

Een release-pijplijn maken

  1. Meld u aan bij uw Azure DevOps-organisatie.

  2. Selecteer Pijplijnen>releases in het linkermenu en selecteer Nieuwe pijplijn.

    Nieuwe pijplijn.

  3. Het venster Nieuwe release-pijplijn wordt geopend. Selecteer op het tabblad Pijplijnen in het deelvenster Een sjabloon selecteren de optie Lege taak.

    Selecteer een sjabloon.

  4. Selecteer de knop Fase . Voeg in het deelvenster Fase de naam van het stadium toe. Selecteer Opslaan om de pijplijn op te slaan.

    Geef de fase een naam.

  5. Selecteer de knop Een artefact toevoegen . Selecteer in het deelvenster Een artefact toevoegen de opslagplaats waarin uw code zich bevindt, vul relevante informatie in en klik op Toevoegen. Selecteer Opslaan om de pijplijn op te slaan.

    Voeg een artefact toe.

  6. Selecteer op het tabblad Variabelen de optie + Toevoegen om een variabele te maken voor Eindpunt-URL die in de taak wordt gebruikt. Schrijf de naam en de waarde van het eindpunt. Selecteer Opslaan om de pijplijn op te slaan.

    Maak een variabele.

    Als u uw Endpoint_URL wilt vinden, bevat de overzichtspagina van uw Azure Data Explorer-cluster in de Azure Portal de Azure Data Explorer-cluster-URI. Maak de URI in de volgende indeling https://<Azure Data Explorer cluster URI>?DatabaseName=<DBName>. Bijvoorbeeld: https://kustodocs.westus.kusto.windows.net?DatabaseName=SampleDB

    Azure Data Explorer cluster-URI.

Taken maken om de mappen te implementeren

  1. Klik op het tabblad Pijplijn op 1 taak, 0 taak om taken toe te voegen.

    Voeg taken toe.

  2. Herhaal de volgende stappen om opdrachttaken te maken voor het implementeren van bestanden vanuit de mappen Tabellen, Functies en Beleid :

    Beheeropdrachten toevoegen.

    1. Selecteer op het tabblad Taken de optie +Agenttaak en zoek naar Azure Data Explorer.

    2. Selecteer onder Azure Data Explorer-opdracht uitvoeren de optie Toevoegen.

    3. Selecteer Kusto Command en werk de taak bij met de volgende informatie:

      • Weergavenaam: naam van de taak. Hierbij is bijvoorbeeld Deploy <FOLDER><FOLDER> de naam van de map voor de implementatietaak die u maakt.

      • Bestandspad: geef voor elke map het pad op als */<FOLDER>/*.csl waar <FOLDER> de relevante map voor de taak is.

      • Eindpunt-URL: geef de variabele op die in de EndPoint URL vorige stap is gemaakt.

      • Service-eindpunt gebruiken: selecteer deze optie.

      • Service-eindpunt: selecteer een bestaand service-eindpunt of maak een nieuw service-eindpunt (+ Nieuw) met de volgende informatie in het venster Azure Data Explorer serviceverbinding toevoegen:

        Instelling Voorgestelde waarde
        Verbindingsnaam Voer een naam in om dit service-eindpunt te identificeren
        Cluster-URL De waarde vindt u in de overzichtssectie van uw Azure Data Explorer-cluster in de Azure Portal
        Service-principal-id Voer de Microsoft Entra app-id in (gemaakt als vereiste)
        Service-principal-app-sleutel Voer de Microsoft Entra-app-sleutel in (gemaakt als vereiste)
        tenant-id van Microsoft Entra Voer uw Microsoft Entra tenant in (zoals microsoft.com of contoso.com)

      Schakel het selectievakje Alle pijplijnen toestaan deze verbinding te gebruiken in en selecteer vervolgens OK.

      Serviceverbinding toevoegen.

  3. Selecteer Opslaan en controleer vervolgens op het tabblad Taken of er drie taken zijn: Tabellen implementeren, Functies implementeren en Beleid implementeren.

    Alle mappen implementeren.

Een querytaak maken

Maak indien nodig een taak om een query uit te voeren op het cluster. Het uitvoeren van query's in een build- of release-pijplijn kan worden gebruikt om een gegevensset te valideren en een stap te laten slagen of mislukken op basis van de queryresultaten. De criteria voor geslaagde taken kunnen worden gebaseerd op een drempelwaarde voor het aantal rijen of één waarde, afhankelijk van wat de query retourneert.

  1. Selecteer + op het tabblad Taken op Agenttaak en zoek naar Azure Data Explorer.

  2. Selecteer onder Azure Data Explorer-query uitvoeren de optie Toevoegen.

  3. Selecteer Kusto-query en werk de taak bij met de volgende informatie:

    • Weergavenaam: naam van de taak. Bijvoorbeeld Een query uitvoeren op cluster.
    • Type: Selecteer Inline.
    • Query: voer de query in die u wilt uitvoeren.
    • Eindpunt-URL: geef de EndPoint URL variabele op die u eerder hebt gemaakt.
    • Service-eindpunt gebruiken: selecteer deze optie.
    • Service-eindpunt: selecteer een service-eindpunt.

    Querytaak.

  4. Selecteer onder Taakresultaten als volgt de succescriteria van de taak op basis van de resultaten van uw query:

    • Als uw query rijen retourneert, selecteert u Aantal rijen en geeft u de criteria op die u nodig hebt.

      Aantal querytakenrijen.

    • Als uw query een waarde retourneert, selecteert u Enkele waarde en geeft u het verwachte resultaat op.

      Querytaak één waarde.

Een queryserverpoorttaak maken

Maak indien nodig een taak om een query uit te voeren op een cluster en de voortgang van de release in afwachting van het aantal rijen met queryresultaten. De taak Serverquerypoort is een taak zonder agent, wat betekent dat de query rechtstreeks op de Azure DevOps Server wordt uitgevoerd.

  1. Selecteer op het tabblad Taken de optie +Taak zonder agent en zoek naar Azure Data Explorer.

  2. Selecteer onder Run Azure Data Explorer Query Server Gatede optie Add.

  3. Selecteer Kusto Query Server Gate en selecteer vervolgens Server Gate Test.

    Selecteer Serverpoorttaak.

  4. Configureer de taak met de volgende informatie:

    • Weergavenaam: naam van de poort.
    • Service-eindpunt: selecteer een service-eindpunt.
    • Databasenaam: geef de databasenaam op.
    • Type: Selecteer Inlinequery.
    • Query: voer de query in die u wilt uitvoeren.
    • Maximumdrempelwaarde: geef het maximumaantal rijen op voor de criteria voor het slagen van de query.

    Serverpoorttaak configureren.

Notitie

Als het goed is, ziet u de volgende resultaten wanneer u de release uitvoert.

Querypoorttaak.

De release uitvoeren

  1. Selecteer + Release>Release maken om een release te maken.

    Maak een release.

  2. Controleer op het tabblad Logboeken of de implementatiestatus is geslaagd.

    De implementatie is voltooid.

U hebt nu een release-pijplijn gemaakt voor implementatie naar preproductie.

Configuratie van Yaml-pijplijn

De taken kunnen worden geconfigureerd via de Azure DevOps-webinterface (zoals hierboven weergegeven) en via Yaml-code binnen het pijplijnschema

Voorbeeldgebruik van Beheer-opdracht

steps:
- task: Azure-Kusto.PublishToADX.PublishToADX.PublishToADX@1
  displayName: '<Task Name>'
  inputs:
    script: '<inline Script>'
    waitForOperation: true
    kustoUrls: '$(CONNECTIONSTRING):443?DatabaseName=""'
    customAuth: true
    connectedServiceName: '<Service Endpoint Name>'
    serialDelay: 1000
  continueOnError: true
  condition: ne(variables['ProductVersion'], '') ## Custom condition Sample

Queryvoorbeeldgebruik

steps:
- task: Azure-Kusto.PublishToADX.ADXQuery.ADXQuery@1
  displayName: '<Task Display Name>'
  inputs:
    script: |  
     let badVer=
     RunnersLogs | where Timestamp > ago(30m)
         | where EventText startswith "$$runnerresult" and Source has "ShowDiagnostics"
         | extend State = extract(@"Status='(.*)', Duration.*",1, EventText)
         | where State == "Unhealthy"
         | extend Reason = extract(@'"NotHealthyReason":"(.*)","IsAttentionRequired.*',1, EventText)
         | extend Cluster = extract(@'Kusto.(Engine|DM|CM|ArmResourceProvider).(.*).ShowDiagnostics',2, Source)
         | where Reason != "Merge success rate past 60min is < 90%"
         | where Reason != "Ingestion success rate past 5min is < 90%"
         | where Reason != "Ingestion success rate past 5min is < 90%, Merge success rate past 60min is < 90%"
         | where isnotempty(Cluster)
         | summarize max(Timestamp) by Cluster,Reason 
         | order by  max_Timestamp desc      
         | where Reason startswith "Differe"
         | summarize by Cluster
     ;   
      DimClusters | where Cluster in (badVer)
     | summarize by Cluster , CmConnectionString , ServiceConnectionString ,DeploymentRing
     | extend ServiceConnectionString = strcat("#connect ", ServiceConnectionString)
     | where DeploymentRing == "$(DeploymentRing)"
    kustoUrls: 'https://<ClusterName>.kusto.windows.net?DatabaseName=<DataBaneName>'
    customAuth: true
    connectedServiceName: '<Service Endpoint Name>'
  continueOnError: true