共用方式為


適用於 Azure 數據總管的 Azure DevOps 工作

Azure DevOps Services 提供開發共同作業工具,例如高效能管線、免費的私人 Git 存放庫、可設定的工作流程看板,以及廣泛的自動化和持續測試功能。 Azure Pipelines 是 Azure DevOps 功能,可讓您管理 CI/CD,以使用任何語言、平台和雲端的高效能管線來部署程序代碼。 Azure 數據總管 - 管線工具 是 Azure Pipelines 工作,可讓您建立發行管線,並將資料庫變更部署至 Azure 數據總管資料庫。 其可在Visual Studio Marketplace免費取得。 此延伸模組包含下列基本工作:

  • Azure 數據總管命令 - 對 Azure 數據總管叢集執行管理員命令

  • Azure 數據總管查詢 - 對 Azure 數據總管叢集執行查詢,並剖析結果

  • Azure 數據總管查詢伺服器閘道 - 閘道版本的無代理程式工作取決於查詢結果

    管線工具擴充功能中可用工作類型的螢幕快照。

本文件說明使用 Azure 資料總管 - 管線工具 工作將架構變更部署至資料庫的簡單範例。 如需完整的 CI/CD 管線,請參閱 Azure DevOps 檔

必要條件

準備您的內容以發行

您可以使用下列方法,針對工作內的叢集執行系統管理員命令:

顯示命令原始檔控制選項的螢幕快照。

  • 使用搜尋模式從本機代理程式資料夾取得多個命令檔案(組建來源或發行成品)

    顯示本機資料夾選項的螢幕快照。

  • 內嵌撰寫命令

    顯示內嵌命令選項的螢幕快照。

  • 指定檔案路徑以直接從 Git 原始檔控制取得命令檔案(建議)

    顯示 Git 原始檔控制檔案選項的螢幕快照。

    在您的 Git 存放庫中建立下列範例資料夾(FunctionsPoliciesTables)。範例存放庫 中的檔案複製到個別的資料夾,並認可變更。 系統會提供範例檔案來執行下列工作流程。

    顯示存放庫中要建立之資料夾的螢幕快照。

    提示

    建立您自己的工作流程時,建議您建立程式碼等冪。 例如,使用 .create-merge table 而非 ,並使用 .create-or-alter 函式而非.create.create table式。

建立發行管線

  1. 登入您的 Azure DevOps 組織

  2. 從左側功能表中選取 [管線>發行],然後選取 [新增管線]。

    顯示如何啟動新管線的螢幕快照。

  3. [ 新增發行管線] 視窗隨即開啟。 在 [ 管線] 索引 標籤的 [選取範本 ] 窗格中,選取 [空白作業]。

    顯示如何選取範本的螢幕快照。

  4. 選取 [ 階段] 按鈕。 在 [階段 ] 窗格中,新增 [ 階段名稱]。 選取 [ 儲存] 以儲存您的管線。

    顯示如何命名管線階段的螢幕快照。

  5. 選取 [ 新增成品 ] 按鈕。 在 [ 新增成品 ] 窗格中,選取程序代碼所在的存放庫、填寫相關信息,然後選取 [ 新增]。 選取 [ 儲存] 以儲存您的管線。

    顯示如何新增成品的螢幕快照。

  6. 在 [變數] 索引標籤中,選取 [+ 新增] 以建立工作中使用的端點 URL 變數。 寫入端點的名稱和。 選取 [ 儲存] 以儲存您的管線。

    顯示如何建立管線變數的螢幕快照。

    若要尋找您的端點 URL,請移至 Azure 入口網站 中 Azure 數據總管叢集的概觀頁面,並複製叢集 URI。 以下列格式 https://<ClusterURI>?DatabaseName=<DBName>建構變數 URI。 例如,https://kustodocs.westus.kusto.windows.net?DatabaseName=SampleDB

    顯示如何為 Azure 數據總管叢集 URI 新增值的螢幕快照。

建立工作部署資料夾

  1. 在 [ 管線] 索引標籤中 ,選取要新增工作的 1 個作業、0 個工作

    顯示將工作新增至管線的螢幕快照。

  2. 重複下列步驟來建立命令工作,以從 [數據表]、 [函式] 和 [原則] 資料夾部署檔案:

    顯示如何新增 Azure 資料總管系統管理員命令的螢幕快照。

    1. 在 [工作] 索引標籤中,依 [代理程序作業] 選取+並搜尋 Azure 數據總管。

    2. 在 [執行 Azure 數據總管命令] 底下,選取 [新增]。

    3. 選取 [Kusto 命令 ],並使用下列資訊更新工作:

      • 顯示名稱:工作的名稱。 例如, Deploy <FOLDER> 其中 <FOLDER> 是您要建立之部署工作的資料夾名稱。

      • 檔案路徑:針對每個資料夾,將路徑指定為 */<FOLDER>/*.csl ,其中 <FOLDER> 是工作的相關資料夾。

      • 端點 URL:指定在上一個步驟中建立的 EndPoint URL 變數。

      • 使用服務端點:選取此選項。

      • 服務端點:選取現有的服務端點,或在 [新增 Azure 數據總管服務連線] 視窗中建立新的服務端點,並提供下列資訊:

        設定 建議的值
        驗證方法 設定同盟身分識別認證 (FIC) (建議), 或選取服務主體驗證 (SPA)。
        連線名稱 輸入名稱以識別此服務端點
        叢集 URL 您可以在 azure 數據總管叢集的概觀區段中,於 Azure 入口網站 中找到值
        服務主體標識碼 輸入Microsoft Entra 應用程式識別碼(建立為必要條件)
        服務主體應用程式金鑰 輸入Microsoft Entra 應用程式金鑰(建立為必要條件)
        Microsoft Entra 租用戶標識符 輸入您的Microsoft Entra 租使用者(例如 microsoft.com 或 contoso.com)

      選取 [ 允許所有管線使用此聯機 ] 複選框,然後選取 [ 確定]。

      顯示如何新增服務連線的螢幕快照。

  3. 選取 [儲存],然後在 [工作] 索引標籤中,確認有三項工作:[部署數據表]、[部署函式] 和 [部署原則]。

    顯示如何部署所有資料夾的螢幕快照。

建立查詢工作

如有必要,請建立工作以對叢集執行查詢。 在組建或發行管線中執行查詢可用來驗證數據集,並根據查詢結果成功或失敗步驟。 工作成功準則可以根據數據列計數閾值或單一值,視查詢傳回的內容而定。

  1. 在 [工作] 索引標籤中,依 [代理程序作業] 選取+並搜尋 Azure 數據總管。

  2. 在 [執行 Azure 數據總管查詢] 底下,選取 [新增]。

  3. 選取 [Kusto 查詢 ],並使用下列資訊更新工作:

    • 顯示名稱:工作的名稱。 例如, 查詢叢集
    • 類型:選取 內嵌
    • 查詢:輸入您要執行的查詢。
    • 端點 URL:指定稍早建立的 EndPoint URL 變數。
    • 使用服務端點:選取此選項。
    • 服務端點:選取服務端點。

    顯示如何建立查詢工作的螢幕快照。

  4. 在 [工作結果] 底下,根據查詢的結果選取工作的成功準則,如下所示:

    • 如果您的查詢傳回數據列,請選取 [ 數據列計數 ],並提供您需要的準則。

      顯示查詢傳回數據列並設定數據列計數閾值的螢幕快照。

    • 如果您的查詢傳回值,請選取 [單一值 ],並提供預期的結果。

      此螢幕快照顯示查詢會傳回單一值並設定預期的值。

建立查詢伺服器閘道工作

如有必要,請建立工作以對叢集執行查詢,並網關暫止查詢結果數據列計數的發行進度。 伺服器查詢閘道工作是無代理程式作業,這表示查詢會直接在 Azure DevOps Server 上執行。

  1. 在 [工作] 索引標籤中,依無代理程式作業選取+並搜尋 Azure 數據總管

  2. 在 [執行 Azure 數據總管查詢伺服器閘道] 底下,選取 [新增]。

  3. 選取 [Kusto 查詢伺服器閘道],然後選取 [伺服器閘道測試]。

    顯示如何選取伺服器閘道工作的螢幕快照。

  4. 設定提供下列資訊的工作:

    • 顯示名稱:閘道的名稱。
    • 服務端點:選取服務端點。
    • 資料庫名稱:指定資料庫名稱。
    • 類型:選取 [內嵌查詢]。
    • 查詢:輸入您要執行的查詢。
    • 最大閾值:指定查詢成功準則的數據列計數上限。

    顯示如何設定伺服器閘道工作的螢幕快照。

注意

執行版本時,您應該會看到如下的結果。

顯示查詢閘道工作結果範例的螢幕快照。

執行版本

  1. 選取 [+ 發行>建立版本] 以建立發行。

    顯示如何建立發行的螢幕快照。

  2. 在 [ 記錄] 索引標籤中,檢查部署狀態是否成功。

    顯示成功部署的螢幕快照。

現在已完成建立發行管線以部署至生產階段前。

Azure 資料總管 DevOps 工作的無密鑰驗證支援

此延伸模組支援 Azure 資料總管叢集的無金鑰驗證。 無密鑰驗證可讓您在不使用金鑰的情況下向 Azure 資料總管叢集進行驗證,而且比使用密鑰更安全且更容易管理。

在 Azure 數據總管服務連線中使用同盟身分識別認證 (FIC) 驗證

  1. 在您的 DevOps 實例中,移至 [項目設定>服務連線>] [新增服務連線>Azure 數據總管]。

  2. 選取 [同盟身分識別認證],然後輸入您的叢集 URL、服務主體標識碼、租使用者標識碼、服務連線名稱,然後選取 [ 儲存]。

  3. 在 Azure 入口網站 中,開啟指定服務主體的 Microsoft Entra 應用程式。

  4. 在 [憑證與秘密] 底 ,選取 [ 同盟認證]。

    顯示 [Microsoft Entra] 應用程式的 [同盟認證] 索引標籤的螢幕快照。

  5. 選取 [新增認證 ],然後針對 [同盟認證案例],選取 [其他簽發者],然後使用下列資訊填寫設定:

    • 簽發者<https://vstoken.dev.azure.com/{System.CollectionId}> 其中 {System.CollectionId} 是 Azure DevOps 組織的集合標識碼。 您可以透過下列方式找到集合識別碼:

      • 在 Azure DevOps 傳統發行管線中,選取 [ 初始化作業]。 集合標識子會顯示在記錄中。
    • 主體標識碼<sc://{DevOps_Org_name}/{Project_Name}/{Service_Connection_Name}> 其中 {DevOps_Org_name} 是 Azure DevOps 組織名稱、 {Project_Name} 專案名稱,而 {Service_Connection_Name} 是您稍早建立的服務連線名稱。

      注意

      如果您的服務連線名稱中有空格,您可以使用它搭配 欄位中的空間。 例如: sc://MyOrg/MyProject/My Service Connection

    • 名稱:輸入認證的名稱。

    顯示如何使用同盟身分識別認證建立新服務連線的螢幕快照。

  6. 選取 [新增]。

在 Azure Resource Manager (ARM) 服務連線中使用同盟身分識別認證或受控識別

  1. 在您的 DevOps 實例中,移至 [項目設定>服務連線] [新增服務連線>>Azure Resource Manager]。

    顯示如何新增 Azure 資源監視器服務連線的螢幕快照。

  2. 在 [驗證方法] 底下,選取 [工作負載身分識別同盟][自動]。 或者,您可以使用手動工作負載身分識別同盟 (manual 選項來指定 [工作負載識別同盟] 詳細數據,或使用 [ 受控識別 ] 選項。 如需使用 Azure 資源管理設定受控識別的詳細資訊,請參閱 Azure Resource Manager (ARM) 服務連線

    顯示 Azure 資源監視器服務連線之驗證選項的螢幕快照

  3. 填寫必要的詳細數據,選取 [驗證],然後選取 [ 儲存]。

Yaml 管線設定

工作可以透過 Azure DevOps Web UI 和管線架構內的 Yaml 程式代碼來設定。

管理員命令範例使用方式

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

查詢範例使用方式

steps:
- task: Azure-Kusto.PublishToADX.ADXQuery.ADXQuery@4
  displayName: '<Task Display Name>'
  inputs:
    targetType: 'inline'
    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>'
    authType: 'kustoserviceconn'
    connectedServiceName: '<connection service name>'
    minThreshold: '0'
    maxThreshold: '10'
  continueOnError: true