Automatizzare compilazioni, test e distribuzioni di un progetto di Analisi di flusso
Il pacchetto npm ci/cd di Analisi di flusso di Azure consente di compilare, testare e distribuire automaticamente i progetti di Analisi di flusso. Questo articolo illustra come usare il pacchetto npm con qualsiasi sistema CI/CD. Per configurare una pipeline con Azure DevOps, vedere Usare Azure DevOps per creare una pipeline CI/CD per un processo di Analisi di flusso.
Se non si ha un progetto di Analisi di flusso, crearne uno usando Visual Studio Code o esportarne uno esistente dal portale di Azure.
Installazione
È possibile scaricare il pacchetto dal sito npm oppure eseguire il comando seguente nel terminale.
npm install -g azure-streamanalytics-cicd
Compilare un progetto
Nota
È consigliabile usare l'opzione --v2
per lo schema del modello di Resource Manager aggiornato. Lo schema aggiornato ha un minor numero di parametri ma mantiene la stessa funzionalità della versione precedente.
Il modello arm precedente verrà deprecato in futuro. Da ora in poi, solo i modelli creati tramite build --v2
riceveranno aggiornamenti o correzioni di bug.
azure-streamanalytics-cicd build --v2 --project <projectFullPath> [--outputPath <outputPath>]
Il comando di compilazione esegue un controllo della sintassi delle parole chiave e genera modelli di Azure Resource Manager (ARM).
Argomento | Descrizione |
---|---|
--project |
Specificare il file asaproj.json usando il percorso assoluto o relativo. |
--outputPath |
Specificare la cartella di output per l'archiviazione dei modelli arm usando il percorso assoluto o relativo. Se outputPath non viene specificato, i modelli vengono inseriti nella directory corrente. |
Esempio:
# Go to the project directory
cd <path-to-the-project>
# Build project
azure-streamanalytics-cicd build --v2 --project ./asaproj.json --outputPath ./Deploy
Se il progetto viene compilato correttamente, vengono visualizzati due file JSON creati nella cartella di output:
- File del modello di Resource Manager:
[ProjectName].JobTemplate.json
- File di parametri arm:
[ProjectName].JobTemplate.parameters.json
I valori predefiniti per il file parameters.json provengono dalle impostazioni del progetto. Se si vuole eseguire la distribuzione in un altro ambiente, sostituire i valori di conseguenza.
I valori predefiniti per tutte le credenziali sono Null. È necessario impostare i valori prima di eseguire la distribuzione in Azure.
"Input_EntryStream_sharedAccessPolicyKey": {
"value": null
}
Per usare le identità gestite per Azure Data Lake Store Gen1 come sink di output, è necessario fornire l'accesso all'entità servizio con PowerShell prima della distribuzione in Azure. Altre informazioni su come distribuire ADLS Gen1 con identità gestite usando un modello di Resource Manager.
Esecuzione locale
Se il progetto ha specificato file di input locali, è possibile eseguire uno script di Analisi di flusso in locale usando il localrun
comando .
azure-streamanalytics-cicd localrun -project <projectFullPath> [-outputPath <outputPath>] [-customCodeZipFilePath <zipFilePath>]
Argomento | Descrizione |
---|---|
--project |
Specificare il file asaproj.json usando il percorso assoluto o relativo. |
--outputPath |
Specificare la cartella di output per l'archiviazione dei modelli arm usando il percorso assoluto o relativo. Se outputPath non viene specificato, i modelli vengono inseriti nella directory corrente. |
--customCodeZipFilePath |
Percorso del file ZIP per il codice personalizzato C#, ad esempio una funzione definita dall'utente o un deserializzatore, se vengono usati. Creare il pacchetto delle DLL in un file ZIP e specificare questo percorso. |
Esempio:
# Go to the project directory
cd <path-to-the-project>
# Run project locally
azure-streamanalytics-cicd localrun --project ./asaproj.json"
Nota
La funzione definita dall'utente JavaScript funziona solo in Windows.
Test automatizzato
È possibile usare il pacchetto npm CI/CD per configurare ed eseguire test automatizzati per il progetto di Analisi di flusso.
Aggiungere un test case
azure-streamanalytics-cicd addtestcase --project <projectFullPath> [-testConfigPath <testConfigFileFullPath>]
È possibile trovare i test case nel file di configurazione del test.
Argomento | Descrizione |
---|---|
--project |
Specificare il file asaproj.json usando il percorso assoluto o relativo. |
--testConfigPath |
Percorso del file di configurazione del test. Se non viene specificato, il file viene cercato in \test nella directory corrente del file asaproj.json , con il nome di file predefinito testConfig.json. Se non esiste, viene creato un nuovo file. |
Esempio:
# Go to the project directory
cd <path-to-the-project>
# Add a test case
azure-streamanalytics-cicd addtestcase --project ./asaproj.json
Se il file di configurazione del test è vuoto, al file viene aggiunto il contenuto seguente. In caso contrario, un test case viene aggiunto a una matrice TestCases . Le configurazioni di input necessarie vengono compilate automaticamente in base al file di configurazione di input. È necessario specificare FilePath di ogni input e output previsto prima di eseguire il test. È possibile modificare questa configurazione manualmente.
Se si vuole che la convalida del test ignori un determinato output, impostare il campo Obbligatorio dell'output previsto su 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
}
]
}
]
}
Eseguire unit test
È possibile usare il comando seguente per eseguire più test case per il progetto. Nella cartella di output viene generato un riepilogo dei risultati del test. Il processo viene chiuso con il codice 0 per tutti i test superati; -1 per l'eccezione si è verificata; -2 per i test non superati.
azure-streamanalytics-cicd test --project <projectFullPath> [--testConfigPath <testConfigFileFullPath>] [--outputPath <outputPath>] [--customCodeZipFilePath <zipFilePath>]
Argomento | Descrizione |
---|---|
--project |
Percorso del file asaproj.json . |
--testConfigPath |
Percorso del file di configurazione del test. Se non viene specificato, il file viene cercato in \test nella directory corrente del file asaproj.json , con il nome di file predefinito testConfig.json. |
--outputPath |
Percorso della cartella di output dei risultati del test. Se non viene specificato, i file dei risultati di output vengono inseriti nella directory corrente. |
--customCodeZipFilePath |
Percorso del file ZIP per codice personalizzato, ad esempio una funzione definita dall'utente o un deserializzatore, se vengono usati. È necessario creare il pacchetto delle DLL per il file ZIP e specificare il percorso. |
Se i test case vengono eseguiti, è possibile trovare un file testResultSummary.json generato nella cartella di 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,
}
Nota
Se i risultati della query contengono valori float, è possibile che si verifichino lievi differenze nei valori prodotti che portano a un test probabilmente non riuscito. Si basa sui diversi framework .NET che alimentano il motore di Visual Studio o Visual Studio e il motore di elaborazione dei test. Per assicurarsi che i test vengano eseguiti correttamente, è necessario ridurre la precisione dei valori prodotti o allineare i risultati da confrontare manualmente con i risultati dei test generati.
Distribuisci in Azure
Per distribuire il progetto di Analisi di flusso usando i modelli di Resource Manager, seguire questa procedura:
Connettersi all'account Azure:
# Connect to Azure Connect-AzAccount # Set the Azure subscription Set-AzContext [SubscriptionID/SubscriptionName]
Distribuire il progetto di Analisi di flusso:
$templateFile = ".\Deploy\ClickStream-Filter.JobTemplate.json" $parameterFile = ".\Deploy\ClickStream-Filter.JobTemplate.parameters.json" New-AzResourceGroupDeployment ` -Name devenvironment ` -ResourceGroupName myResourceGroupDev ` -TemplateFile $templateFile ` -TemplateParameterFile $parameterFile
Per altre informazioni sulla distribuzione delle risorse con i modelli di Resource Manager, vedere Distribuire con un file modello di Resource Manager e Azure PowerShell.