Automatisera byggen, tester och distributioner av ett Stream Analytics-projekt
Med Azure Stream Analytics-paketet (ASA) CI/CD npm kan du automatiskt skapa, testa och distribuera dina Stream Analytics-projekt. Den här artikeln visar hur du använder npm-paketet med alla CI/CD-system. Information om hur du konfigurerar en pipeline med Azure DevOps finns i Använda Azure DevOps för att skapa en CI/CD-pipeline för ett Stream Analytics-jobb.
Om du inte har ett Stream Analytics-projekt skapar du ett med Visual Studio Code eller exporterar ett befintligt från Azure Portal.
Installation
Du kan ladda ned paketet från npm-platsen eller köra följande kommando i terminalen.
npm install -g azure-streamanalytics-cicd
Skapa projekt
Anteckning
Vi rekommenderar starkt att du använder --v2
alternativet för det uppdaterade ARM-mallschemat. Det uppdaterade schemat har färre parametrar men behåller samma funktioner som den tidigare versionen.
Den gamla ARM-mallen kommer att bli inaktuell i framtiden. Från och med nu får endast mallar som har skapats via build --v2
uppdateringar eller felkorrigeringar.
azure-streamanalytics-cicd build --v2 --project <projectFullPath> [--outputPath <outputPath>]
Build-kommandot gör en nyckelordssyntaxkontroll och genererar ARM-mallar (Azure Resource Manager).
Argument | Description |
---|---|
--project |
Ange filen asaproj.json med absolut eller relativ sökväg. |
--outputPath |
Ange utdatamappen för lagring av ARM-mallar med absolut eller relativ sökväg. Om outputPath inte anges placeras mallarna i den aktuella katalogen. |
Exempel:
# Go to the project directory
cd <path-to-the-project>
# Build project
azure-streamanalytics-cicd build --v2 --project ./asaproj.json --outputPath ./Deploy
Om projektet har skapats visas två JSON-filer som skapats under utdatamappen:
- ARM-mallfil:
[ProjectName].JobTemplate.json
- ARM-parameterfil:
[ProjectName].JobTemplate.parameters.json
Standardvärdena för filen parameters.json kommer från dina projektinställningar. Om du vill distribuera till en annan miljö ersätter du värdena i enlighet med detta.
Standardvärdena för alla autentiseringsuppgifter är null. Du måste ange värdena innan du distribuerar till Azure.
"Input_EntryStream_sharedAccessPolicyKey": {
"value": null
}
Om du vill använda Hanterad identitet för Azure Data Lake Store Gen1 som utdatamottagare måste du ge åtkomst till tjänstens huvudnamn med hjälp av PowerShell innan du distribuerar till Azure. Läs mer om hur du distribuerar ADLS Gen1 med hanterad identitet med Resource Manager mall.
Lokal körning
Om projektet har angett lokala indatafiler kan du köra ett Stream Analytics-skript lokalt med hjälp localrun
av kommandot .
azure-streamanalytics-cicd localrun -project <projectFullPath> [-outputPath <outputPath>] [-customCodeZipFilePath <zipFilePath>]
Argument | Description |
---|---|
--project |
Ange filen asaproj.json med absolut eller relativ sökväg. |
--outputPath |
Ange utdatamappen för lagring av ARM-mallar med absolut eller relativ sökväg. Om outputPath inte anges placeras mallarna i den aktuella katalogen. |
--customCodeZipFilePath |
Sökvägen till zip-filen för anpassad C#-kod, till exempel en UDF eller deserialiserare, om de används. Paketera DLL:erna i en zip-fil och ange den här sökvägen. |
Exempel:
# Go to the project directory
cd <path-to-the-project>
# Run project locally
azure-streamanalytics-cicd localrun --project ./asaproj.json"
Anteckning
JavaScript UDF fungerar bara i Windows.
Automatiserat test
Du kan använda CI/CD npm-paketet för att konfigurera och köra automatiserade tester för Stream Analytics-projektet.
Lägga till ett testfall
azure-streamanalytics-cicd addtestcase --project <projectFullPath> [-testConfigPath <testConfigFileFullPath>]
Du hittar testfallen i testkonfigurationsfilen.
Argument | Description |
---|---|
--project |
Ange filen asaproj.json med absolut eller relativ sökväg. |
--testConfigPath |
Sökvägen till testkonfigurationsfilen. Om den inte anges genomsöks filen i \test under den aktuella katalogen i filen asaproj.json , med standardfilnamnet testConfig.json. En ny fil skapas om den inte finns. |
Exempel:
# Go to the project directory
cd <path-to-the-project>
# Add a test case
azure-streamanalytics-cicd addtestcase --project ./asaproj.json
Om testkonfigurationsfilen är tom läggs följande innehåll till i filen. Annars läggs ett testfall till i en TestCases-matris . Nödvändiga indatakonfigurationer fylls i automatiskt enligt indatakonfigurationsfilen. FilePath för varje indata och förväntade utdata måste anges innan testet körs. Du kan ändra den här konfigurationen manuellt.
Om du vill att testverifieringen ska ignorera en viss utdata anger du fältet Obligatoriskt för förväntade utdata till falskt.
{
"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
}
]
}
]
}
Kör enhetstest
Du kan använda följande kommando för att köra flera testfall för projektet. En sammanfattning av testresultaten genereras i utdatamappen. Processen avslutas med kod 0 för alla tester som har godkänts. -1 för undantag inträffade; -2 för tester misslyckades.
azure-streamanalytics-cicd test --project <projectFullPath> [--testConfigPath <testConfigFileFullPath>] [--outputPath <outputPath>] [--customCodeZipFilePath <zipFilePath>]
Argument | Description |
---|---|
--project |
Sökvägen till filen asaproj.json . |
--testConfigPath |
Sökvägen till testkonfigurationsfilen. Om den inte anges genomsöks filen i \test under den aktuella katalogen i filen asaproj.json , med standardfilnamnet testConfig.json. |
--outputPath |
Sökvägen till testresultatets utdatamapp. Om den inte anges placeras utdataresultatfilerna i den aktuella katalogen. |
--customCodeZipFilePath |
Sökvägen till zip-filen för anpassad kod, till exempel en UDF eller deserialiserare, om de används. Du måste paketera DLL:er för att zip-filen och ange sökvägen. |
Om testfall körs hittar du en testResultSummary.json-fil som genereras i utdatamappen.
{
"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,
}
Anteckning
Om frågeresultatet innehåller flyttalvärden kan det uppstå små skillnader i de genererade värdena som leder till ett förmodligen misslyckat test. Detta baseras på de olika .NET-ramverken som driver Visual Studio- eller Visual Studio-motorn och testbearbetningsmotorn. Om du vill se till att testerna körs korrekt måste du minska precisionen för dina genererade värden eller justera resultaten för att jämföras manuellt med de genererade testresultaten.
Distribuera till Azure
Följ dessa steg för att distribuera Stream Analytics-projektet med ARM-mallar:
Anslut till ditt Azure-konto:
# Connect to Azure Connect-AzAccount # Set the Azure subscription Set-AzContext [SubscriptionID/SubscriptionName]
Distribuera ditt Stream Analytics-projekt:
$templateFile = ".\Deploy\ClickStream-Filter.JobTemplate.json" $parameterFile = ".\Deploy\ClickStream-Filter.JobTemplate.parameters.json" New-AzResourceGroupDeployment ` -Name devenvironment ` -ResourceGroupName myResourceGroupDev ` -TemplateFile $templateFile ` -TemplateParameterFile $parameterFile
Mer information om hur du distribuerar resurser med ARM-mallar finns i Distribuera med en Resource Manager mallfil och Azure PowerShell.