Azure DevOps-uppgift för Azure Data Explorer
Azure DevOps Services tillhandahåller samarbetsverktyg för utveckling, till exempel pipelines med höga prestanda, kostnadsfria privata Git-lagringsplatsen, konfigurerbara Kanban-tavlor och omfattande funktioner för automatiserad och kontinuerlig testning. Azure Pipelines är en Azure DevOps-funktion som gör att du kan hantera CI/CD för att distribuera din kod med högpresterande pipelines som fungerar med alla språk, plattformar och moln. Azure Data Explorer – Pipeline Tools är Azure Pipelines-uppgiften som gör att du kan skapa lanseringspipelines och distribuera dina databasändringar till dina Azure Data Explorer databaser. Det är tillgängligt kostnadsfritt på Visual Studio Marketplace. Det här tillägget innehåller tre grundläggande uppgifter:
Azure Data Explorer – Kör administratörskommandon mot ett Azure Data Explorer kluster
Azure Data Explorer fråga – köra frågor mot ett Azure Data Explorer kluster och parsa resultaten
Azure Data Explorer Query Server Gate – Agentlös uppgift till gate-versioner beroende på frågeresultatet

Det här dokumentet beskriver ett enkelt exempel på hur du använder uppgiften Azure Data Explorer - Pipeline Tools för att distribuera schemaändringarna till databasen. Fullständiga CI/CD-pipelines finns i Azure DevOps-dokumentationen.
Förutsättningar
- En Azure-prenumeration. Skapa ett kostnadsfritt Azure-konto.
- Skapa ett kluster och en databas.
- Azure Data Explorer klusterkonfiguration:
- Skapa Azure Active Directory (Azure AD) genom att etablera ett Azure AD-program.
- Bevilja åtkomst till din Azure AD App din Azure Data Explorer genom att hantera Azure Data Explorer databasbehörigheter.
- Azure DevOps-konfiguration:
- Tilläggsinstallation:
- Om du äger Azure DevOps-instansen installerar du tillägget från Marketplace.


- Om du INTE äger Azure DevOps-instansen kontaktar du din ägare och ber dem att installera den.
- Om du äger Azure DevOps-instansen installerar du tillägget från Marketplace.
Förbered ditt innehåll för lansering
det finns tre sätt att köra administratörskommandon mot kluster i en uppgift.

Använd ett sökmönster för att hämta flera kommandofiler från en lokal agentmapp (build-källor eller frisläpp artefakter)

Skriva kommandon infogade

Ange en filsökväg för att hämta kommandofiler direkt från git-källkontroll (rekommenderas)

Skapa följande exempelmappar (Functions,Principer,Tabeller ) påGit-lagringsplatsen. Kopiera filerna härifrån till respektive mappar enligt nedan och genomför ändringarna. Exempelfilerna tillhandahålls för att köra följande arbetsflöde.

Tips
När du skapar ett eget arbetsflöde rekommenderar vi att du gör koden idempotent. Använd till exempel i
.create-merge tablestället för och funktionen i stället för funktionen.create table.create-or-alter.create.
Skapa en versionspipeline
Logga in på din Azure DevOps-organisation.
Välj PipelinesReleases (Versioner av pipelines) på den vänstra menyn och välj New pipeline (Ny pipeline).

Fönstret Ny lanseringspipeline öppnas. På fliken Pipelines går du till fönstret Välj en mall och väljer Tomt jobb.

Välj knappen Fas. I fönstret Fas lägger du till fasnamnet. Välj Spara för att spara din pipeline.

Välj knappen Lägg till en artefakt. I fönstret Lägg till en artefakt väljer du den lagringsplats där koden finns, fyller i relevant information och klickar på Lägg till. Välj Spara för att spara din pipeline.

På fliken Variabler väljer du + Lägg till för att skapa en variabel för Slutpunkts-URL som ska användas i uppgiften. Skriv Namn och Värde för slutpunkten. Välj Spara för att spara din pipeline.

För att hitta Endpoint_URL innehåller översiktssidan för ditt Azure Data Explorer kluster i Azure Portal den Azure Data Explorer kluster-URI:en. Skapa URI:en i följande
https://<Azure Data Explorer cluster URI>?DatabaseName=<DBName>format. Till exempel https://kustodocs.westus.kusto.windows.net?DatabaseName=SampleDB
Skapa uppgifter för att distribuera mapparna
På fliken Pipeline klickar du på 1 jobb, 0 uppgift för att lägga till aktiviteter.

Upprepa följande steg för att skapa kommandoaktiviteter för att distribuera filer från mapparna Tabeller,Funktioneroch Principer:

På fliken Uppgifter väljer du efter agentjobb och söker efter Azure Data Explorer.
Under Kör Azure Data Explorer kommando väljerdu Lägg till.
Välj Kusto-kommando och uppdatera uppgiften med följande information:
Visningsnamn:Namnet på aktiviteten. Till
Deploy <FOLDER>exempel, där<FOLDER>är namnet på mappen för den distributionsuppgift som du skapar.Filsökväg:För varje mapp anger du sökvägen som var är relevant mapp för
<FOLDER>uppgiften.Slutpunkts-URL:Ange variabeln som skapades i föregående steg.
Använd Tjänstslutpunkt:Välj det här alternativet.
Tjänstslutpunkt:Välj en befintlig tjänstslutpunkt eller skapa en ny (+ Ny) med följande information i fönstret Lägg till Azure Data Explorer tjänstanslutning:
Inställning Föreslaget värde Anslutningsnamn Ange ett namn för att identifiera den här tjänstslutpunkten Kluster-URL Värdet finns i översiktsavsnittet för ditt Azure Data Explorer kluster i Azure Portal Id för tjänstens huvudnamn Ange AAD app-ID (skapas som förutsättning) Appnyckel för tjänstens huvudnamn Ange AAD appnyckel (skapad som förutsättning) AAD klientorganisations-ID Ange din AAD (till exempel microsoft.com eller contoso.com)
Markera kryssrutan Tillåt att alla pipelines använder den här anslutningen och välj sedan OK.

Välj Spara och kontrollera på fliken Uppgifter att det finns tre uppgifter: Distribuera tabeller,Distribuera funktioneroch Distribuera principer.

Skapa en frågeuppgift
Om det behövs skapar du en uppgift för att köra en fråga mot klustret. Att köra frågor i en bygg- eller lanseringspipeline kan användas för att verifiera en datauppsättning och få ett steg att lyckas eller misslyckas baserat på frågeresultatet. Framgångskriterierna för aktiviteterna kan baseras på ett tröskelvärde för radantal eller ett enskilt värde beroende på vad frågan returnerar.
På fliken Uppgifter väljer du efter agentjobb och söker efter Azure Data Explorer.
Under Kör Azure Data Explorer frågaväljer du Lägg till.
Välj Kusto-fråga och uppdatera uppgiften med följande information:
- Visningsnamn:Namnet på aktiviteten. Till exempel Frågekluster.
- Skriv: Välj Infogade.
- Fråga:Ange den fråga som du vill köra.
- Slutpunkts-URL:Ange variabeln som skapades tidigare.
- Använd Tjänstslutpunkt:Välj det här alternativet.
- Tjänstslutpunkt:Välj en tjänstslutpunkt.

Under Uppgiftsresultat väljer du uppgiftens framgångskriterier baserat på resultatet av din fråga enligt följande:
Om frågan returnerar rader väljer du Radantal och anger de kriterier som du behöver.

Om frågan returnerar ett värde väljer du Enskilt värde och anger det förväntade resultatet.

Skapa en Query Server Gate-uppgift
Om det behövs skapar du en uppgift för att köra en fråga mot ett kluster och gater lanseringsförloppet som väntar på radantal frågeresultat. Server Query Gate-uppgiften är ett agentlöst jobb, vilket innebär att frågan körs direkt på Azure DevOps Server.
På fliken Uppgifter väljer du efter Agentlös jobb och söker efter Azure Data Explorer.
Under Kör Azure Data Explorer Query Server Gate väljerdu Lägg till.
Välj Kusto Query Server Gate och välj sedan Server Gate Test.

Konfigurera uppgiften med följande information:
- Visningsnamn:Namnet på grinden.
- Tjänstslutpunkt:Välj en tjänstslutpunkt.
- Databasnamn:Ange databasnamnet.
- Skriv: Välj Den infogade frågan.
- Fråga:Ange den fråga som du vill köra.
- Högsta tröskelvärde:Ange det maximala radantalet för frågans lyckade villkor.

Anteckning
Du bör se resultat som liknar följande när du kör versionen.

Kör versionen
Välj + Skapa versionför att skapa en version.

På fliken Loggar kontrollerar du att distributionsstatusen har lyckats.

Nu har du skapat en lanseringspipeline för distribution till förproduktion.
Konfiguration av Yaml-pipeline
Uppgifterna kan konfigureras både via Azure DevOps Web UI (som visas ovan) och via Yaml-kod i pipelineschemat
Exempelanvändning för administratörskommando
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
Användning av frågeexempel
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