Azure DevOps úloha pro Azure Data Explorer
Azure DevOps Services nabízí nástroje pro spolupráci při vývoji, jako jsou vysoce výkonné kanály, bezplatná privátní úložiště Git, konfigurovatelné panely Kanbanu a rozsáhlé možnosti automatizovaného a průběžného testování. Azure Pipelines je Azure DevOps, která umožňuje spravovat CI/CD pro nasazení kódu pomocí vysoce výkonných kanálů, které pracují s libovolným jazykem, platformou a cloudem. Azure Data Explorer – Nástroje kanálu je Azure Pipelines, která umožňuje vytvářet kanály verze a nasazovat změny databáze do vašich Azure Data Explorer databází. Je k dispozici zdarma na webu Visual Studio Marketplace. Toto rozšíření zahrnuje 3 základní úlohy:
Azure Data Explorer – Spouštění příkazů správce pro cluster Azure Data Explorer clusteru
Azure Data Explorer Query – Spouštění dotazů na Azure Data Explorer clusteru a parsování výsledků
Azure Data Explorer query server gate – úloha bez agentů k bráně verzí v závislosti na výsledku dotazu

Tento dokument popisuje jednoduchý příklad použití úlohy Azure Data Explorer – Pipeline Tools k nasazení změn schématu do databáze. Kompletní kanály CI/CD najdete v Azure DevOps dokumentaci.
Požadavky
- Předplatné Azure. Vytvořte si bezplatný účet Azure.
- Vytvořte cluster a databázi.
- Azure Data Explorer nastavení clusteru:
- Vytvořte Azure Active Directory (Azure AD) zřízením aplikace Azure AD.
- Udělte přístup Aplikace Azure AD vaší databázi Azure Data Explorer pomocí správy Azure Data Explorer databáze.
- Azure DevOps nastavení:
- Instalace rozšíření:
- Pokud jste vlastníkem Azure DevOps instance, nainstalujte rozšíření z webu Marketplace.


- Pokud NEJSTE vlastníkem Azure DevOps instance, obraťte se na vlastníka a požádejte ho o jeho instalaci.
- Pokud jste vlastníkem Azure DevOps instance, nainstalujte rozšíření z webu Marketplace.
Příprava obsahu pro vydání
Jsou to tři způsoby, jak spouštět příkazy správce pro cluster v úkolu.

Použití vyhledávacího vzoru k získání více souborů příkazů ze složky místního agenta (zdroje sestavení nebo artefakty verze)

Vložené příkazy pro zápis

Zadání cesty k souboru pro získání souborů příkazů přímo ze správy zdrojového kódu Git (doporučeno)

V úložišti Git vytvořte následující ukázkové složky (Functions, Policies, Tables). Zkopírujte soubory odsud do příslušných složek, jak je vidět níže, a potvrďte změny. Ukázkové soubory jsou k dispozici pro spuštění následujícího pracovního postupu.

Tip
Při vytváření vlastního pracovního postupu doporučujeme, aby byl váš kód idempotentní. Použijte například místo a místo
.create-merge table.create tablefunkce použijte funkci.create-or-alter.create.
Vytvoření kanálu verze
Přihlaste se ke své Azure DevOps organizace.
V nabídce PipelinesVyberte Nové verze a vyberte Nový kanál.

Otevře se okno Nový kanál verze. Na kartě Pipelines vyberte v podokně Vybrat šablonu možnost Prázdná úloha.

Vyberte tlačítko Stage (Fáze). V podokně Fáze přidejte název Fáze. Výběrem možnosti Uložit kanál uložte.

Vyberte tlačítko Přidat artefakt. V podokně Přidat artefakt vyberte úložiště, ve kterém je váš kód, vyplňte příslušné informace a klikněte na Přidat. Výběrem možnosti Uložit kanál uložte.

Na kartě Proměnné vyberte + Přidat a vytvořte proměnnou pro adresu URL koncového bodu, která se použije v úkolu. Zadejte Název a Hodnotu koncového bodu. Výběrem možnosti Uložit kanál uložte.

Pokud chcete Endpoint_URL, stránka přehledu vašeho clusteru Azure Data Explorer v Azure Portal obsahuje Azure Data Explorer identifikátor URI clusteru. Vytvořte identifikátor URI v následujícím
https://<Azure Data Explorer cluster URI>?DatabaseName=<DBName>formátu. Například https://kustodocs.westus.kusto.windows.net?DatabaseName=SampleDB.
Vytvoření úloh pro nasazení složek
Na kartě Kanál klikněte na 1 úloha, 0 úkol a přidejte úkoly.

Opakováním následujících kroků vytvořte příkazové úlohy pro nasazení souborů ze složek Tabulky,Funkcea Zásady:

Na kartě Úkoly vyberte podle úlohy agenta a vyhledejte Azure Data Explorer.
V části Azure Data Explorer Command (Spustit příkaz)vyberte Add (Přidat).
Vyberte Příkaz Kusto a aktualizujte úlohu následujícími informacemi:
Zobrazovanýnázev: Název úlohy. Například
Deploy <FOLDER>kde<FOLDER>je název složky pro úlohu nasazení, kterou vytváříte.Cesta ksouboru: Pro každou složku zadejte cestu, kde je
<FOLDER>příslušná složka pro úlohu.Adresa URL koncového bodu: Zadejte proměnnou vytvořenou v předchozím kroku.
Použít koncový bod služby:Tuto možnost vyberte.
Koncový bodslužby: Vyberte existující koncový bod služby nebo vytvořte nový (+Nový) s následujícími informacemi v okně Přidat Azure Data Explorer připojení služby:
Nastavení Navrhovaná hodnota Název připojení Zadejte název pro identifikaci tohoto koncového bodu služby. Adresa URL clusteru Hodnotu najdete v části Přehled vašeho clusteru Azure Data Explorer v Azure Portal ID objektu služby Zadejte ID AAD aplikace (vytvořené jako požadavek). Klíč aplikace s hlavním objektem služby Zadejte klíč AAD aplikace (vytvořený jako požadavek). AAD ID tenanta Zadejte tenanta AAD (například microsoft.com nebo contoso.com).
Zaškrtněte políčko Povolit všem kanálům používat toto připojení a pak vyberte OK.

Vyberte Uložit a pak na kartě Úlohy ověřte, že existují tři úlohy: Nasazení tabulek , Nasazení funkcía Nasazení zásad.

Vytvoření úlohy dotazu
V případě potřeby vytvořte úlohu, která spustí dotaz na cluster. Spouštění dotazů v kanálu buildu nebo verze se může použít k ověření datové sady a úspěšné nebo nedaří krok na základě výsledků dotazu. Kritéria úspěchu úkolů mohou být založená na prahové hodnotě počtu řádků nebo jedné hodnotě v závislosti na tom, co dotaz vrátí.
Na kartě Úkoly vyberte podle úlohy agenta a vyhledejte Azure Data Explorer.
V části Azure Data Explorer Queryvyberte Přidat.
Vyberte Dotaz Kusto a aktualizujte úlohu následujícími informacemi:
- Zobrazovanýnázev: Název úlohy. Příklad: Dotaz na cluster.
- Napište: Vyberte Inline (Vložený).
- Dotaz:Zadejte dotaz, který chcete spustit.
- Adresa URL koncovéhobodu: Zadejte proměnnou vytvořenou dříve.
- Použít koncový bod služby:Tuto možnost vyberte.
- Koncový bod služby:Vyberte koncový bod služby.

V části Výsledky úlohy vyberte kritéria úspěchu úkolu na základě výsledků dotazu následujícím způsobem:
Pokud dotaz vrátí řádky, vyberte Počet řádků a zadejte kritéria, která požadujete.

Pokud dotaz vrátí hodnotu, vyberte Jedna hodnota a zadejte očekávaný výsledek.

Vytvoření úlohy Query Server Gate
V případě potřeby vytvořte úlohu, která spustí dotaz na cluster, a pusťte průběh vydání čekající na počet řádků výsledků dotazu. Úloha Server Query Gate je úloha bez agentů, což znamená, že dotaz se spouští přímo na Azure DevOps Server.
Na kartě Úkoly vyberte podle úlohy bez agentů a vyhledejte Azure Data Explorer.
V části Azure Data Explorer Query Server Gatevyberte Přidat.
Vyberte Kusto Query Server Gate a pak vyberte Server Gate Test.

Nakonfigurujte úlohu poskytující následující informace:
- Zobrazovanýnázev: Název brány.
- Koncový bod služby:Vyberte koncový bod služby.
- Název databáze:Zadejte název databáze.
- Typ:Vyberte Vložený dotaz.
- Dotaz:Zadejte dotaz, který chcete spustit.
- Maximální prahováhodnota: Zadejte maximální počet řádků pro kritéria úspěchu dotazu.

Poznámka
Při spuštění verze by se měly zobrazit výsledky jako v následujícím příkladu.

Spuštění verze
Výběrem + Release Create release (+Vytvořit verzi) vytvořte vydání.

Na kartě Protokoly zkontrolujte, že stav nasazení je úspěšný.

Dokončili jste vytvoření kanálu verze pro nasazení do předprodukce.
Konfigurace kanálu Yaml
Úlohy je možné nakonfigurovat prostřednictvím webového uživatelského Azure DevOps (jak je znázorněno výše) i prostřednictvím kódu Yaml ve schématu kanálu.
Použití ukázkového příkazu správce
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
Použití ukázky dotazu
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