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 oluşturmanıza, test etmenizi ve dağıtmanızı sağlar. Bu makalede, npm paketinin herhangi bir CI/CD sistemiyle 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 üzere Azure DevOps kullanma.
Stream Analytics projeniz yoksa, Visual Studio Code kullanarak bir proje oluşturun veya var olan bir projeyi Azure portal 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 vardır ancak önceki sürümle aynı işlevselliği korur.
Eski ARM şablonu gelecekte kullanım dışı bırakı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>]
Build komutu bir 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 yolu 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şturulduysa, çıkış klasörünün altında oluşturulan iki JSON dosyası görürsünüz:
- ARM şablon dosyası:
[ProjectName].JobTemplate.json
- ARM 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'dı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 Kimliğ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 olarak çalıştırma
Projeniz yerel giriş dosyaları 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 yolu 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ıldıklarında UDF veya seri durumdan çıkarıcı gibi C# özel kodu için zip dosyasının yolu. DLL'leri bir zip dosyasında 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 yolu 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 dizininin altında, varsayılan dosya adı testConfig.json ile aranılır. Mevcut değilse 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 değeri belirtilmelidir. Bu yapılandırmayı el ile değiştirebilirsiniz.
Test doğrulamasının belirli bir çıkışı yoksaymasını istiyorsanız, beklenen çıkışı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 çıkar; -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 dizininin altında, varsayılan dosya adı testConfig.json ile aranılır. |
--outputPath |
Test sonucu çıkış klasörünün yolu. Belirtilmezse, çıkış sonuç dosyaları geçerli dizine yerleştirilir. |
--customCodeZipFilePath |
Kullanıldıklarında UDF veya seri durumdan çıkarıcı gibi özel kodlar için zip dosyasının yolu. DLL'leri zip dosyasına paketlemeniz ve yolu belirtmeniz gerekir. |
Test çalışmaları yürütülürse çıkış klasöründe oluşturulan bir testResultSummary.json dosyasını 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ı float değerleri içeriyorsa, üretilen değerlerde büyük olasılıkla başarısız bir teste yol açan 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
Stream Analytics projenizi ARM şablonlarını kullanarak 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
ARM şablonlarıyla kaynakları dağıtma hakkında daha fazla bilgi için bkz. Resource Manager şablon dosyasıyla dağıtma ve Azure PowerShell.