Mengotomatiskan build, pengujian, dan penyebaran proyek Azure Stream Analytics
Paket npm CI/CD Azure Stream Analytics (ASA) memungkinkan Anda membuat, menguji, dan menyebarkan proyek Azure Stream Analytics secara otomatis. Artikel ini menunjukkan cara menggunakan paket npm dengan sistem CI/CD apa pun. Untuk menyiapkan alur dengan Azure DevOps, lihat Menggunakan Azure DevOps untuk membuat alur CI/CD untuk pekerjaan Azure Stream Analytics.
Jika Anda tidak memiliki proyek Azure Stream Analytics, buat proyek menggunakan Visual Studio Code atau ekspor proyek yang sudah ada dari portal Azure.
Penginstalan
Anda dapat mengunduh paket dari situs npm, atau menjalankan perintah berikut di terminal Anda.
npm install -g azure-streamanalytics-cicd
Membuat proyek
Catatan
Kami sangat menyarankan Anda menggunakan --v2
opsi untuk skema templat ARM yang diperbarui. Skema yang diperbarui memiliki lebih sedikit parameter namun mempertahankan fungsionalitas yang sama dengan versi sebelumnya.
Templat ARM lama tidak akan digunakan lagi di masa mendatang. Mulai sekarang, hanya templat yang dibuat melalui build --v2
yang akan menerima pembaruan atau perbaikan bug.
azure-streamanalytics-cicd build --v2 --project <projectFullPath> [--outputPath <outputPath>]
Perintah build melakukan pemeriksaan sintaks kata kunci dan menghasilkan templat Azure Resource Manager (ARM).
Argumen | Deskripsi |
---|---|
--project |
Tentukan file asaproj.json menggunakan jalur absolut atau relatif. |
--outputPath |
Tentukan folder output untuk menyimpan Templat ARM menggunakan jalur absolut atau relatif. Jika outputPath tidak ditentukan, templat ditempatkan di direktori saat ini. |
Contoh:
# Go to the project directory
cd <path-to-the-project>
# Build project
azure-streamanalytics-cicd build --v2 --project ./asaproj.json --outputPath ./Deploy
Jika proyek berhasil dibangun, Anda akan melihat dua file JSON yang dibuat di bawah folder output:
- File templat ARM:
[ProjectName].JobTemplate.json
- File parameter ARM:
[ProjectName].JobTemplate.parameters.json
Nilai default untuk file parameters.json berasal dari pengaturan proyek Anda. Jika Anda ingin menyebarkan ke lingkungan lain, ganti nilai yang sesuai.
Nilai default untuk semua info masuk adalah null. Anda diharuskan untuk mengatur nilai sebelum menyebarkan ke Azure.
"Input_EntryStream_sharedAccessPolicyKey": {
"value": null
}
Untuk menggunakan identitas terkelola untuk Azure Data Lake Store Gen1 sebagai sink output, Anda perlu menyediakan Akses ke perwakilan layanan menggunakan PowerShell sebelum menyebarkan Azure. Pelajari selengkapnya tentang cara menyebarkan ADLS Gen1 dengan Identitas Terkelola dengan templat Azure Resource Manager.
Jalankan secara lokal
Jika proyek Anda telah menetapkan file input lokal, Anda dapat menjalankan skrip Analisis Aliran di lingkungan lokal menggunakan perintah localrun
.
azure-streamanalytics-cicd localrun -project <projectFullPath> [-outputPath <outputPath>] [-customCodeZipFilePath <zipFilePath>]
Argumen | Deskripsi |
---|---|
--project |
Tentukan file asaproj.json menggunakan jalur absolut atau relatif. |
--outputPath |
Tentukan folder output untuk menyimpan Templat ARM menggunakan jalur absolut atau relatif. Jika outputPath tidak ditentukan, templat ditempatkan di direktori saat ini. |
--customCodeZipFilePath |
Jalur file zip untuk kode kustom C#, seperti UDF atau deserializer, jika digunakan. Masukkan DLL ke dalam file zip dan tentukan jalur ini. |
Contoh:
# Go to the project directory
cd <path-to-the-project>
# Run project locally
azure-streamanalytics-cicd localrun --project ./asaproj.json"
Catatan
JavaScript UDF hanya berfungsi pada Windows.
Pengujian otomatis
Anda dapat menggunakan paket npm CI/CD untuk mengonfigurasi dan menjalankan pengujian otomatis untuk proyek Azure Stream Analytics Anda.
Menambahkan kasus pengujian
azure-streamanalytics-cicd addtestcase --project <projectFullPath> [-testConfigPath <testConfigFileFullPath>]
Anda dapat menemukan kasus pengujian dalam file konfigurasi pengujian.
Argumen | Deskripsi |
---|---|
--project |
Tentukan file asaproj.json menggunakan jalur absolut atau relatif. |
--testConfigPath |
Jalur file konfigurasi pengujian. Jika tidak ditentukan, file dicari di \test di bawah direktori file asaproj.json saat ini, dengan nama file default testConfig.json. File baru dibuat jika tidak ada. |
Contoh:
# Go to the project directory
cd <path-to-the-project>
# Add a test case
azure-streamanalytics-cicd addtestcase --project ./asaproj.json
Jika file konfigurasi pengujian kosong, konten berikut ditambahkan ke file. Jika tidak, kasus pengujian ditambahkan ke array TestCases . Konfigurasi input yang diperlukan secara otomatis diisi sesuai dengan file konfigurasi input. FilePath dari setiap input dan output yang diharapkan harus ditentukan sebelum menjalankan pengujian. Anda dapat mengubah konfigurasi ini secara manual.
Jika Anda ingin validasi pengujian mengabaikan output tertentu, atur bidang Diperlukan dari output yang diharapkan ke false.
{
"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
}
]
}
]
}
Jalankan pengujian unit
Anda bisa menggunakan perintah berikut untuk menjalankan beberapa kasus pengujian untuk proyek Anda. Ringkasan hasil pengujian dibuat di folder output. Proses keluar dengan kode 0 untuk semua pengujian yang lulus; -1 untuk pengecualian yang terjadi; -2 untuk pengujian gagal.
azure-streamanalytics-cicd test --project <projectFullPath> [--testConfigPath <testConfigFileFullPath>] [--outputPath <outputPath>] [--customCodeZipFilePath <zipFilePath>]
Argumen | Deskripsi |
---|---|
--project |
Jalur file asaproj.json . |
--testConfigPath |
Jalur ke file konfigurasi pengujian. Jika tidak ditentukan, file dicari di \test di bawah direktori file asaproj.json saat ini, dengan nama file default testConfig.json. |
--outputPath |
Jalur folder output hasil pengujian. Jika tidak ditentukan, file hasil output ditempatkan di direktori saat ini. |
--customCodeZipFilePath |
Jalur file zip untuk kode kustom seperti UDF atau deserializer, jika digunakan. Anda perlu mengemas DLL ke file zip dan menentukan jalurnya. |
Jika kasus pengujian dijalankan, Anda dapat menemukan file testResultSummary.json yang dihasilkan di folder output.
{
"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,
}
Catatan
Jika hasil kueri berisi nilai float, Anda mungkin mengalami sedikit perbedaan dalam nilai yang dihasilkan yang mengarah ke pengujian yang mungkin gagal. Ini didasarkan pada berbagai kerangka kerja .NET yang mendukung mesin Visual Studio atau Visual Studio dan mesin pemrosesan pengujian. Jika Anda ingin memastikan bahwa pengujian berhasil dijalankan, Anda harus mengurangi presisi nilai yang dihasilkan atau menyelaraskan hasilnya untuk dibandingkan secara manual dengan hasil pengujian yang dihasilkan.
Sebarkan ke Azure
Untuk menyebarkan proyek Azure Stream Analytics menggunakan templat ARM, ikuti langkah-langkah berikut:
Sambungkan ke akun Azure Anda:
# Connect to Azure Connect-AzAccount # Set the Azure subscription Set-AzContext [SubscriptionID/SubscriptionName]
Sebarkan proyek Azure Stream Analytics Anda:
$templateFile = ".\Deploy\ClickStream-Filter.JobTemplate.json" $parameterFile = ".\Deploy\ClickStream-Filter.JobTemplate.parameters.json" New-AzResourceGroupDeployment ` -Name devenvironment ` -ResourceGroupName myResourceGroupDev ` -TemplateFile $templateFile ` -TemplateParameterFile $parameterFile
Untuk informasi selengkapnya tentang menyebarkan sumber daya dengan templat ARM, lihat Menyebarkan dengan file templat Resource Manager dan Azure PowerShell.