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:
Azure hesabınıza bağlanın:
# Connect to Azure Connect-AzAccount # Set the Azure subscription Set-AzContext [SubscriptionID/SubscriptionName]
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.