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

    Typy úloh.

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říprava obsahu pro vydání

Jsou to tři způsoby, jak spouštět příkazy správce pro cluster v úkolu.

Možnosti správy zdrojového kódu příkazů.

  • 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)

    Možnost místní složky.

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

    Možnost v řádku příkazů.

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

    Možnost Souborů Git.

    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.

    Vytvořte složky pro repo.

    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 table funkce použijte funkci .create-or-alter.create .

Vytvoření kanálu verze

  1. Přihlaste se ke své Azure DevOps organizace.

  2. V nabídce PipelinesVyberte Nové verze a vyberte Nový kanál.

    Nový kanál.

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

    Vyberte šablonu.

  4. 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.

    Pojmete fázi.

  5. 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.

    Přidejte artefakt.

  6. 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.

    Vytvořte proměnnou.

    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.

    Azure Data Explorer identifikátor URI clusteru.

Vytvoření úloh pro nasazení složek

  1. Na kartě Kanál klikněte na 1 úloha, 0 úkol a přidejte úkoly.

    Přidejte úkoly.

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

    Přidejte příkazy správce.

    1. Na kartě Úkoly vyberte podle úlohy agenta a vyhledejte Azure Data Explorer.

    2. V části Azure Data Explorer Command (Spustit příkaz)vyberte Add (Přidat).

    3. 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.

      Přidejte připojení služby.

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

    Nasaďte všechny složky.

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í.

  1. Na kartě Úkoly vyberte podle úlohy agenta a vyhledejte Azure Data Explorer.

  2. V části Azure Data Explorer Queryvyberte Přidat.

  3. 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.

    Dotazovací úloha.

  4. 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.

      Počet řádků úkolu dotazu.

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

      Dotaz na jednu hodnotu úkolu.

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.

  1. Na kartě Úkoly vyberte podle úlohy bez agentů a vyhledejte Azure Data Explorer.

  2. V části Azure Data Explorer Query Server Gatevyberte Přidat.

  3. Vyberte Kusto Query Server Gate a pak vyberte Server Gate Test.

    Vyberte Server Gate Task (Úloha serverové brány).

  4. 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.

    Nakonfigurujte úlohu serverové brány.

Poznámka

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

Úloha brány dotazu.

Spuštění verze

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

    Vytvořte verzi.

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

    Nasazení bylo ú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