Mengotomatiskan pembangunan, pengujian, dan penyebaran proyek Stream Analytics.

Paket npm CI/CD Azure Stream Analytics (ASA) membantu 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 menggunakan Azure DevOps, lihat Gunakan 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 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

--v2 Gunakan opsi untuk skema templat ARM yang diperbarui. Skema yang diperbarui memiliki lebih sedikit parameter tetapi mempertahankan fungsionalitas yang sama dengan versi sebelumnya.

Templat ARM lama tidak digunakan lagi. Hanya templat yang dibuat melalui build --v2 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 dengan menggunakan jalur absolut atau relatif.
--outputPath Tentukan folder output untuk menyimpan templat ARM dengan menggunakan jalur absolut atau relatif. Jika Anda tidak menentukan outputPath, templat masuk ke 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 Azure Resource Manager parameter: [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 kredensial adalah null. Atur nilai sebelum Anda menyebarkan ke Azure.

"Input_EntryStream_sharedAccessPolicyKey": {
  "value": null
}

Untuk menggunakan Identitas Terkelola untuk Azure Data Lake Store Gen1 sebagai output sink, Anda perlu memberikan akses kepada perwakilan layanan menggunakan PowerShell sebelum penerapan ke Azure. Untuk mempelajari selengkapnya, lihat deploy ADLS Gen1 dengan Identitas Terkelola dengan templat Resource Manager.

Menjalankan secara lokal

Jika proyek Anda menyertakan file input lokal, gunakan localrun perintah untuk menjalankan skrip Azure Stream Analytics secara lokal.

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 Lokasi file zip untuk kode kustom C#, seperti UDF atau deserializer, jika Anda menggunakannya. 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

UDF JavaScript hanya berfungsi di Windows.

Pengujian otomatis

Gunakan 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 Anda tidak menentukan argumen ini, alat mencari file di \test di bawah direktori file asaproj.json saat ini, dengan nama file default testConfig.json. Jika file tidak ada, alat akan membuat file baru.

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, tambahkan konten berikut ke file. Jika tidak, tambahkan kasus pengujian ke array TestCases . Alat ini secara otomatis mengisi konfigurasi input yang diperlukan sesuai dengan file konfigurasi input. Anda harus menentukan FilePath untuk setiap input dan output yang diharapkan 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

Gunakan perintah berikut untuk menjalankan beberapa kasus pengujian untuk proyek Anda. Proses ini menghasilkan ringkasan hasil pengujian di folder output. Proses keluar dengan kode 0 jika semua pengujian lulus, -1 jika pengecualian terjadi, dan -2 jika pengujian gagal.

azure-streamanalytics-cicd test --project <projectFullPath> [--testConfigPath <testConfigFileFullPath>] [--outputPath <outputPath>] [--customCodeZipFilePath <zipFilePath>]
Argumen Deskripsi
--project Jalur dari file asaproj.json.
--testConfigPath Jalur ke file konfigurasi pengujian. Jika Anda tidak menentukan argumen ini, proses mencari file di \test di bawah direktori file asaproj.json saat ini, dengan nama file default testConfig.json.
--outputPath Jalur folder keluaran hasil pengujian. Jika Anda tidak menentukan argumen ini, proses menempatkan file hasil output 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 jalur.

Jika Anda menjalankan kasus pengujian, 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 menyebabkan pengujian yang mungkin gagal. Perbedaan ini didasarkan pada kerangka kerja .NET yang berbeda yang mendukung mesin Visual Studio atau Visual Studio dan mesin pemrosesan pengujian. Untuk memastikan bahwa pengujian berjalan dengan sukses, kurangi presisi nilai yang Anda hasilkan atau selaraskan hasilnya untuk dibandingkan secara manual dengan hasil pengujian yang dihasilkan.

Sebarkan ke Azure

Untuk menyebarkan proyek Azure Stream Analytics Anda dengan menggunakan templat ARM, ikuti langkah-langkah berikut:

  1. Sambungkan ke akun Azure Anda:

    # Connect to Azure
    Connect-AzAccount
    # Set the Azure subscription
    Set-AzContext [SubscriptionID/SubscriptionName]
    
  2. 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 menggunakan templat ARM, lihat Deploy dengan file templat Resource Manager dan Azure PowerShell.