Azure DevOps-taak voor Azure Data Explorer

Azure DevOps Services biedt ontwikkelhulpprogramma's voor samenwerking, zoals krachtige pijplijnen, gratis persoonlijke Git-opslagplaatsen, configureerbare Kanbanborden en uitgebreide mogelijkheden voor geautomatiseerde en continue tests. Azure Pipelines is een Azure DevOps-functie 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 release-pijplijnen kunt maken en uw databasewijzigingen kunt implementeren in uw Azure Data Explorer databases. Deze is gratis beschikbaar in Visual Studio Marketplace. Deze extensie bevat drie basistaken:

  • Azure Data Explorer opdracht - Beheeropdrachten 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 resultaat van de query

    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 DevOpsvoor volledige CI/CD-pijplijnen.

Vereisten

Uw inhoud voorbereiden voor release

De zijn drie manieren om beheeropdrachten uit te voeren op een cluster in een taak.

Opties voor broncodebeheer voor opdrachten.

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

    Optie Lokale map.

  • Opdrachten inline schrijven

    Opdrachtoptie Inline.

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

    Optie Git-bestanden.

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

    Maak mappen voor de repo.

    Tip

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

Een release-pijplijn maken

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

  2. Selecteer PijplijnenReleases 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 de fase toe. Selecteer Opslaan om uw pijplijn op te slaan.

    Noem de fase.

  5. Selecteer de knop Een artefact toevoegen. Selecteer in het deelvenster Een artefact toevoegen de opslagplaats waar uw code zich bevindt, vul relevante informatie in en klik op Toevoegen. Selecteer Opslaan om uw 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 uw 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 URI Azure Data Explorer cluster. Maak de URI in de volgende https://<Azure Data Explorer cluster URI>?DatabaseName=<DBName> indeling. 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.

    Taken toevoegen.

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

    Voeg beheeropdrachten toe.

    1. Selecteer op het tabblad Taken de optie Agent job en zoek naar Azure Data Explorer.

    2. Selecteer onder Opdracht Azure Data Explorer uitvoerende optie Toevoegen.

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

      • Weergavenaam:de naam van de taak. Bijvoorbeeld, waarbij Deploy <FOLDER> de naam is van de map voor de <FOLDER> implementatietaak die u maakt.

      • Bestandspad:geef voor elke map het pad op, waarbij de relevante map voor de taak <FOLDER> is.

      • Eindpunt-URL:geef de variabele op die u in de vorige stap hebt gemaakt.

      • Service-eindpunt gebruiken:selecteer deze optie.

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

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

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

      Voeg een serviceverbinding toe.

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

    Implementeer alle mappen.

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 het slagen van 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 de optie Agent job en zoek naar Azure Data Explorer.

  2. Selecteer onder Azure Data Explorer query uitvoerende optie Toevoegen.

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

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

    Querytaak.

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

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

      Aantal querytaakrijen.

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

      Eén querytaakwaarde.

Een queryserverpoorttaak maken

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

  1. Selecteer op het tabblad Taken de optie Agentloze taak 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 Server Gate Task.

  4. Configureer de taak met de volgende informatie:

    • Weergavenaam:naam van de poort.
    • Service-eindpunt:selecteer een service-eindpunt.
    • Databasenaam:geef de naam van de database op.
    • Type:selecteer Inline-query.
    • Query:voer de query in die u wilt uitvoeren.
    • Maximale drempelwaarde:geef het maximum aantal rijen op voor de succescriteria van de query.

    Server gate taak configureren.

Notitie

De resultaten moeten er als volgt uit zien wanneer u de release gaat uitvoeren.

Query Gate-taak.

De release uitvoeren

  1. Selecteer + Release makenom een release te maken.

    Maak een release.

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

    De implementatie is geslaagd.

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

Yaml Pipeline-configuratie

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

Voorbeeldgebruik van beheeropdracht

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