Aracılığıyla paylaş


Stream Analytics projesinin derlemelerini, testlerini ve dağıtımlarını otomatikleştirme

Azure Stream Analytics (ASA) CI/CD npm paketi, Stream Analytics projelerinizi otomatik olarak derlemenize, test etmenizi ve dağıtmanızı sağlar. Bu makalede herhangi bir CI/CD sistemiyle npm paketinin nasıl kullanılacağı gösterilmektedir. Azure DevOps ile işlem hattı ayarlamak için bkz . Stream Analytics işi için CI/CD işlem hattı oluşturmak için Azure DevOps kullanma.

Stream Analytics projeniz yoksa Visual Studio Code kullanarak bir proje oluşturun veya Mevcut bir projeyi Azure portalından dışarı aktarın.

Yükleme

Paketi npm sitesinden indirebilir veya terminalinizde aşağıdaki komutu çalıştırabilirsiniz.

npm install -g azure-streamanalytics-cicd

Proje oluşturma

Not

Güncelleştirilmiş ARM şablonu şeması için seçeneğini kullanmanızı --v2 kesinlikle öneririz. Güncelleştirilmiş şemada daha az parametre var ancak önceki sürümle aynı işlevselliği koruyor.

Eski ARM şablonu gelecekte kullanımdan kaldırılacaktır. Bundan sonra yalnızca aracılığıyla build --v2 oluşturulan şablonlar güncelleştirmeleri veya hata düzeltmelerini alacak.

azure-streamanalytics-cicd build --v2 --project <projectFullPath> [--outputPath <outputPath>]

Derleme komutu anahtar sözcük söz dizimi denetimi yapar ve Azure Resource Manager (ARM) şablonları oluşturur.

Bağımsız değişken Açıklama
--project Mutlak veya göreli yol kullanarak asaproj.json dosyasını belirtin.
--outputPath ARM Şablonlarını mutlak veya göreli yol kullanarak depolamak için çıkış klasörünü belirtin. Belirtilmezse outputPath şablonlar geçerli dizine yerleştirilir.

Örnek:

# Go to the project directory
cd <path-to-the-project>

# Build project
azure-streamanalytics-cicd build --v2 --project ./asaproj.json --outputPath ./Deploy

Proje başarıyla oluşturulursa, çıkış klasörünün altında oluşturulan iki JSON dosyası görürsünüz:

  • ARM şablon dosyası: [ProjectName].JobTemplate.json
  • Azure Resource Manager parametre dosyası: [ProjectName].JobTemplate.parameters.json

parameters.json dosyasının varsayılan değerleri proje ayarlarınızdan gelir. Başka bir ortama dağıtmak istiyorsanız, değerleri uygun şekilde değiştirin.

Tüm kimlik bilgileri için varsayılan değerler null'tır. Azure'a dağıtmadan önce değerleri ayarlamanız gerekir.

"Input_EntryStream_sharedAccessPolicyKey": {
  "value": null
}

Azure Data Lake Store 1. Nesil için Yönetilen Kimlik'i çıkış havuzu olarak kullanmak için Azure'a dağıtmadan önce PowerShell kullanarak hizmet sorumlusuna Erişim sağlamanız gerekir. Resource Manager şablonuyla Yönetilen Kimlik ile ADLS 1. Nesil'i dağıtma hakkında daha fazla bilgi edinin.

Yerel ortamda komutunu çalıştırma

Projeniz yerel giriş dosyalarını belirttiyse komutunu kullanarak localrun bir Stream Analytics betiğini yerel olarak çalıştırabilirsiniz.

azure-streamanalytics-cicd localrun -project <projectFullPath> [-outputPath <outputPath>] [-customCodeZipFilePath <zipFilePath>]
Bağımsız değişken Açıklama
--project Mutlak veya göreli yol kullanarak asaproj.json dosyasını belirtin.
--outputPath ARM Şablonlarını mutlak veya göreli yol kullanarak depolamak için çıkış klasörünü belirtin. Belirtilmezse outputPath şablonlar geçerli dizine yerleştirilir.
--customCodeZipFilePath Kullanılıyorsa, C# özel kodu için zip dosyasının yolu(UDF veya seri durumdan çıkarıcı gibi). DLL'leri bir zip dosyasına paketleyin ve bu yolu belirtin.

Örnek:

# Go to the project directory
cd <path-to-the-project>

# Run project locally
azure-streamanalytics-cicd localrun --project ./asaproj.json"

Not

JavaScript UDF yalnızca Windows üzerinde çalışır.

Otomatik test

Stream Analytics projeniz için otomatikleştirilmiş testleri yapılandırmak ve çalıştırmak için CI/CD npm paketini kullanabilirsiniz.

Test çalışması ekleme

azure-streamanalytics-cicd addtestcase --project <projectFullPath> [-testConfigPath <testConfigFileFullPath>]

Test çalışmalarını test yapılandırma dosyasında bulabilirsiniz.

Bağımsız değişken Açıklama
--project Mutlak veya göreli yol kullanarak asaproj.json dosyasını belirtin.
--testConfigPath Test yapılandırma dosyasının yolu. Belirtilmezse, dosya \test içinde asaproj.json dosyasının geçerli dizini altında, varsayılan dosya adı testConfig.json aranılır. Yoksa yeni bir dosya oluşturulur.

Örnek:

# Go to the project directory
cd <path-to-the-project>

# Add a test case
azure-streamanalytics-cicd addtestcase --project ./asaproj.json

Test yapılandırma dosyası boşsa, dosyaya aşağıdaki içerik eklenir. Aksi takdirde TestCases dizisine bir test çalışması eklenir. Gerekli giriş yapılandırmaları, giriş yapılandırma dosyasına göre otomatik olarak doldurulur. Testi çalıştırmadan önce her girişin ve beklenen çıkışın FilePath'i belirtilmelidir. Bu yapılandırmayı el ile değiştirebilirsiniz.

Test doğrulamasının belirli bir çıkışı yoksaymasını istiyorsanız, beklenen çıktının Gerekli alanını false olarak ayarlayın.

{
  "Script": [Absolute path of your script],
  "TestCases": [
    {
      "Name": "Case 1",
      "Inputs": [
        {
          "InputAlias": [Input alias string],
          "Type": "Data Stream",
          "Format": "JSON",
          "FilePath": [Required],
          "ScriptType": "InputMock"
        }
      ],
      "ExpectedOutputs": [
        {
          "OutputAlias": [Output alias string],
          "FilePath": [Required],
          "IgnoreFields": [Fields to ignore for test validation, e.g., ["col1", "col2"]],
          "Required": true
        }
      ]
    }
  ]
}

Birim testi çalıştırma

Projeniz için birden çok test çalışması çalıştırmak için aşağıdaki komutu kullanabilirsiniz. Çıkış klasöründe test sonuçlarının özeti oluşturulur. İşlem, geçirilen tüm testler için kod 0 ile çıkılır; -1 özel durum oluştu; Testler için -2 başarısız oldu.

azure-streamanalytics-cicd test --project <projectFullPath> [--testConfigPath <testConfigFileFullPath>] [--outputPath <outputPath>] [--customCodeZipFilePath <zipFilePath>]
Bağımsız değişken Açıklama
--project asaproj.json dosyasının yolu.
--testConfigPath Test yapılandırma dosyasının yolu. Belirtilmezse, dosya \test içinde asaproj.json dosyasının geçerli dizini altında, varsayılan dosya adı testConfig.json aranılır.
--outputPath Test sonucu çıkış klasörünün yolu. Belirtilmezse, çıkış sonuç dosyaları geçerli dizine yerleştirilir.
--customCodeZipFilePath UDF veya seri durumdan çıkarıcı gibi özel kodlar kullanılıyorsa zip dosyasının yolu. DLL'leri zip dosyası olarak paketlemeniz ve yolu belirtmeniz gerekir.

Test çalışmaları yürütülürse çıktı klasöründe oluşturulan bir testResultSummary.json dosyası bulabilirsiniz.

{
  "Total": (integer) total_number_of_test_cases,
  "Passed": (integer) number_of_passed_test_cases,
  "Failed": (integer) number_of_failed_test_cases,
  "Script": (string) absolute_path_to_asaql_file,
  "Results": [ (array) detailed_results_of_test_cases
    {
      "Name": (string) name_of_test_case,
      "Status": (integer) 0(passed)_or_1(failed),
      "Time": (string) time_span_of_running_test_case,
      "OutputMatched": [ (array) records_of_actual_outputs_equal_to_expected_outputs
        {
          "OutputAlias": (string) output_alias,
          "ExpectedOutput": (string) path_to_the_expected_output_file,
          "Output": (string) path_to_the_actual_output_file
        }
      ],
      "OutputNotEqual": [ (array) records_of_actual_outputs_not_equal_to_expected_outputs
        {
          "OutputAlias": (string) output_alias,
          "ExpectedOutput": (string) path_to_the_expected_output_file,
          "Output": (string) path_to_the_actual_output_file
        }
      ],
      "OutputMissing": [ (array) records_of_actual_outputs_missing
        {
          "OutputAlias": (string) output_alias,
          "ExpectedOutput": (string) path_to_the_expected_output_file,
          "Output": ""
        }
      ],
      "OutputUnexpected": [ (array) records_of_actual_outputs_unexpected
        {
          "OutputAlias": (string) output_alias,
          "ExpectedOutput": "",
          "Output": (string) path_to_the_actual_output_file
        }
      ],
      "OutputUnrequired": [ (array) records_of_actual_outputs_unrequired_to_be_checked
        {
          "OutputAlias": (string) output_alias,
          "ExpectedOutput": (string) path_to_the_expected_output_file,
          "Output": (string) path_to_the_actual_output_file
        }
      ]
    }
  ],
  "Time": (string) time_span_of_running_all_test_cases,
}

Not

Sorgu sonuçları kayan değerler içeriyorsa, büyük olasılıkla başarısız bir teste yol açan üretilen değerlerde küçük farklılıklarla karşılaşabilirsiniz. Bu, Visual Studio veya Visual Studio altyapısını ve test işleme altyapısını güçlendiren farklı .NET çerçevelerini temel alır. Testlerin başarıyla çalıştırıldığından emin olmak istiyorsanız, üretilen değerlerinizin duyarlığını azaltmanız veya sonuçları el ile oluşturulan test sonuçlarıyla karşılaştırılacak şekilde hizalamanız gerekir.

Azure’a dağıtın

ARM şablonlarını kullanarak Stream Analytics projenizi dağıtmak için şu adımları izleyin:

  1. Azure hesabınıza bağlanın:

    # Connect to Azure
    Connect-AzAccount
    # Set the Azure subscription
    Set-AzContext [SubscriptionID/SubscriptionName]
    
  2. Stream Analytics projenizi dağıtma:

    $templateFile = ".\Deploy\ClickStream-Filter.JobTemplate.json"
    $parameterFile = ".\Deploy\ClickStream-Filter.JobTemplate.parameters.json"
    New-AzResourceGroupDeployment `
      -Name devenvironment `
      -ResourceGroupName myResourceGroupDev `
      -TemplateFile $templateFile `
      -TemplateParameterFile $parameterFile
    

KAYNAKLARı ARM şablonlarıyla dağıtma hakkında daha fazla bilgi için bkz . Resource Manager şablon dosyası ve Azure PowerShell ile dağıtma.