Skip to content

Commit dcf62d2

Browse files
Jinming-HugearamaLarryOstermanazure-sdkckairen
authored
sync main branch with feature/dmlib (#4075)
* Update VCPKG Baseline due to zlib (#4027) * override zlib version * shwitch baseline * macro update * override zlib * Fixed CURL build breaks discovered by newer openssl baselines (#4034) * Vcpkg baseline to latest (#4036) * vcpkg baseline * f4b262b259145adb2ab0116a390b08642489d32b * 79fa9d85cb4510b05c2657bd7ec8a6a2cb266dc5 * 6ca56aeb457f033d344a7106cb3f9f1abf8f4e98 * override * 1.4.1` * Removed version override for opentelemetry (#4037) * Removed version override for opentelemetry * Disable deprecation warnings for open telemety tests to guard against future deprecations * Added explanation for 4996 error; removed InMemoryExporter from documentation * Sync eng/common directory with azure-sdk-tools for PR 3790 (#4041) * Added yaml support for job matrix creation * autogen scenario matrix for stress test * Temporary Working State * update to default sparse * pr comments and some error handling * custom matrixfilename and ordering of generatedValues.yaml * common module import * JobMatrix write host Co-authored-by: Albert Cheng <[email protected]> * Storageblob (#4043) * first take * grrrrr * qwqwq * ewqw * eewew * put back * pipeline * Set read-only VCPKG_BINARY_SOURCES_SECRET * Pass InstallLanguageSteps through the perf template * blop pipeline * path * ';l'l; * add support for sync param * --sync flag support * typo * sync * sync to y * for PR * clang Co-authored-by: Daniel Jurek <[email protected]> * Upgrade cspell packages to version `^6.12.0` (#4044) to address dependabot issue https://github.com/Azure/azure-sdk-for-js/security/dependabot/13 Co-authored-by: Jeremy Meng <[email protected]> * Sync eng/common directory with azure-sdk-tools for PR 4480 (#4046) * Add extra parameters for .net readme path * Use another way for default value * Remove custom source Co-authored-by: sima-zhu <[email protected]> * Converted WinHTTP to Async. (#4015) * Async WinHTTP * Added cancellation test; added support for request cancellation. Co-authored-by: Anton Kolesnyk <[email protected]> Co-authored-by: Ahson Khan <[email protected]> Co-authored-by: Rick Winter <[email protected]> * Updated OpenTelemetry tests to use their own `SpanExporter` rather than depend on the `InMemorySpanExporter`. (#4042) * Removed version override for opentelemetry * Disable deprecation warnings for open telemety tests to guard against future deprecations * Added explanation for 4996 error; removed InMemoryExporter from documentation * Checkpoint adding manual telemetry exporter * Switch from using OpenTelemetry's InMemoryExporter (which is an internal-to-opentelemetry test hook) to our own SpanExporter * removed unused variables because gcc doesn't like them * Fixed doxygen comments * Removed a bunch of unnecessary headers * Update sdk/core/azure-core-tracing-opentelemetry/test/ut/test_exporter.hpp Co-authored-by: Rick Winter <[email protected]> Co-authored-by: Rick Winter <[email protected]> * [Perf] Include GA versions of core package (#4053) * Fix to for a SAL annotation (#4054) * In-memory Identity token cache (#4024) * identicalize the comments type (#4063) * Improve scenario matrix edge case handling (#4065) Co-authored-by: Ben Broderick Phillips <[email protected]> * docV1 (#4051) * docV1 * Update doc/PerformanceTesting.md Co-authored-by: Larry Osterman <[email protected]> * Update doc/PerformanceTesting.md Co-authored-by: Larry Osterman <[email protected]> * Update doc/PerformanceTesting.md Co-authored-by: Larry Osterman <[email protected]> * Update doc/PerformanceTesting.md Co-authored-by: Larry Osterman <[email protected]> * comment * some more updates * Update doc/PerformanceTesting.md Co-authored-by: Larry Osterman <[email protected]> * Update doc/PerformanceTesting.md Co-authored-by: Larry Osterman <[email protected]> * Update doc/PerformanceTesting.md Co-authored-by: Larry Osterman <[email protected]> * PR * Update doc/PerformanceTesting.md Co-authored-by: Larry Osterman <[email protected]> Co-authored-by: Larry Osterman <[email protected]> * bump version to newest (#4066) Co-authored-by: scbedd <[email protected]> * Sync eng/common directory with azure-sdk-tools for PR 4543 (#4071) * stress test addons version check * cleanup Co-authored-by: Albert Cheng <[email protected]> * Added the ability to select OpenSSL 1.1.1n if desired. (#4045) * Added ability to switch to OpenSSL 1.1.1n * Fixed OpenSSL compilation challenges - the CRL stuff works now * Added instructions on using OpenSSL 1.1.1 to README * Added vcpkg args to handle openssl variants * Dump out correlation id without verbose logging for resource deployment (#4069) Co-authored-by: Ben Broderick Phillips <[email protected]> * fix typo in PerformanceTesting.md (#4076) Co-authored-by: George Arama <[email protected]> Co-authored-by: Larry Osterman <[email protected]> Co-authored-by: Azure SDK Bot <[email protected]> Co-authored-by: Albert Cheng <[email protected]> Co-authored-by: Daniel Jurek <[email protected]> Co-authored-by: Jeremy Meng <[email protected]> Co-authored-by: sima-zhu <[email protected]> Co-authored-by: Anton Kolesnyk <[email protected]> Co-authored-by: Ahson Khan <[email protected]> Co-authored-by: Rick Winter <[email protected]> Co-authored-by: Mike Harder <[email protected]> Co-authored-by: Ben Broderick Phillips <[email protected]> Co-authored-by: scbedd <[email protected]>
1 parent 585869a commit dcf62d2

File tree

97 files changed

+5147
-1306
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

97 files changed

+5147
-1306
lines changed

.vscode/cspell.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
".github/CODEOWNERS",
1717
".gitignore",
1818
".vscode/cspell.json",
19+
"vcpkg-custom-ports",
1920
"ci.yml",
2021
"squid.conf*",
2122
"eng/common/**/*",
@@ -54,6 +55,7 @@
5455
"Deserializes",
5556
"DFETCH",
5657
"DMSVC",
58+
"DVCPKG",
5759
"docfx",
5860
"DPAPI",
5961
"DRUN",
@@ -73,7 +75,9 @@
7375
"HKEY",
7476
"HRESULT",
7577
"IMDS",
78+
"immutability",
7679
"Intel",
80+
"issecret",
7781
"itfactor",
7882
"iusg",
7983
"jepio",

CMakeSettings.json

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,64 @@
2020
"name": "MSVC_USE_STATIC_CRT",
2121
"value": "True",
2222
"type": "BOOL"
23+
},
24+
{
25+
"name": "VCPKG_MANIFEST_MODE",
26+
"value": "True",
27+
"type": "BOOL"
28+
}
29+
]
30+
},
31+
{
32+
"name": "x64-DebugWithTests-OpenSSL111",
33+
"generator": "Ninja",
34+
"configurationType": "Debug",
35+
"inheritEnvironments": [ "msvc_x64_x64" ],
36+
"buildRoot": "${projectDir}\\out\\build\\${name}",
37+
"installRoot": "${projectDir}\\out\\install\\${name}",
38+
"cmakeCommandArgs": "",
39+
"buildCommandArgs": "-v",
40+
"ctestCommandArgs": "",
41+
"variables": [
42+
{
43+
"name": "VCPKG_TARGET_TRIPLET",
44+
"value": "x64-windows-static",
45+
"type": "STRING"
46+
},
47+
{
48+
"name": "MSVC_USE_STATIC_CRT",
49+
"value": "True",
50+
"type": "BOOL"
51+
},
52+
{
53+
"name": "VCPKG_MANIFEST_MODE",
54+
"value": "True",
55+
"type": "BOOL"
56+
},
57+
{
58+
"name": "VCPKG_OVERLAY_PORTS",
59+
"value": "${projectDir}\\vcpkg-custom-ports",
60+
"type": "STRING"
61+
},
62+
{
63+
"name": "INSTALL_GTEST",
64+
"value": "False",
65+
"type": "BOOL"
66+
},
67+
{
68+
"name": "BUILD_TESTING",
69+
"value": "True",
70+
"type": "BOOL"
71+
},
72+
{
73+
"name": "BUILD_TRANSPORT_CURL",
74+
"value": "True",
75+
"type": "BOOL"
76+
},
77+
{
78+
"name": "BUILD_SAMPLES",
79+
"value": "True",
80+
"type": "BOOL"
2381
}
2482
]
2583
},

README.md

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -324,6 +324,41 @@ The following SDK library releases are available on [vcpkg](https://github.com/m
324324

325325
> NOTE: In case of getting linker errors when consuming the SDK on Windows, make sure that [vcpkg triplet](https://vcpkg.readthedocs.io/en/latest/users/triplets/) being consumed matches the [CRT link flags](https://docs.microsoft.com/cpp/build/reference/md-mt-ld-use-run-time-library?view=msvc-160) being set for your app or library build. See also `MSVC_USE_STATIC_CRT` build flag.
326326
327+
## OpenSSL Version
328+
329+
Several packages within the Azure SDK for C++ use the OpenSSL library. By default, the Azure SDK will use whatever the most recent version of OpenSSL is within the VCPKG repository.
330+
331+
If you need to use a specific version of OpenSSL, you can use the vcpkg custom ports feature to specify the version of OpenSSL to use.
332+
For example, if you want to use OpenSSL 1.1.1, you should create a folder named `vcpkg-custom-ports` next to to your vcpkg.json file.
333+
334+
Navigate to your clone of the vcpkg vcpkg repo and execute "git checkout 3b3bd424827a1f7f4813216f6b32b6c61e386b2e" - this will reset your repo to the last version of OpenSSL 1.1.1
335+
in vcpkg. Then, copy the contents of the `ports/openssl` folder from the vcpkg repo to the `vcpkg-custom-ports` folder you created earlier:
336+
337+
```sh
338+
cd <your vcpkg repo>
339+
git checkout 3b3bd424827a1f7f4813216f6b32b6c61e386b2e
340+
cd ports
341+
cp -r openssl <the location of the vcpkg-custom-ports directory listed above>
342+
```
343+
344+
This will copy the port information for OpenSSL 1.1.1n to your vcpkg-custom-ports directory.
345+
346+
Once that is done, you can install the custom port of OpenSSL 1.1.1n using the vcpkg tool:
347+
348+
```sh
349+
vcpkg install --overlay-ports=<path to the vcpkg-custom-ports above>
350+
```
351+
352+
If you are building using CMAKE, you can instruct CMAKE to apply the overlay ports using the following command line switches:
353+
354+
```sh
355+
vcpkg -DVCPKG_MANIFEST_MODE=ON -DVCPKG_OVERLAY_PORTS=<path to the vcpkg-custom-ports above> -DVCPKG_MANIFEST_DIR=<path to the directory containing the vcpkg.json file>
356+
```
357+
358+
In addition, if you need to consume OpenSSL from a dynamic linked library/shared object, you can set the VCPKG triplet to reflect that you want to build the library with dynamic
359+
entries.Set the VCPKG_you can set the environment variable to `x64-windows-static` or `x64-windows-dynamic` depending on whether you want to use the static or dynamic version of OpenSSL.
360+
Similarly you can use the x64-linux-dynamic and x64-linux-static triplet to specify consumption of libraries as a shared object or dynamic.
361+
327362
## Need help
328363

329364
- For reference documentation visit the [Azure SDK for C++ documentation](https://azure.github.io/azure-sdk-for-cpp).

cmake-modules/AddGoogleTest.cmake

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,8 @@ macro(add_gtest TESTNAME)
7878
else()
7979
gtest_discover_tests(${TESTNAME}
8080
TEST_PREFIX "${TESTNAME}."
81-
PROPERTIES FOLDER "Tests")
81+
PROPERTIES FOLDER "Tests"
82+
DISCOVERY_TIMEOUT 600)
8283
endif()
8384
else()
8485
add_test(${TESTNAME} ${TESTNAME})

cmake-modules/AzureVcpkg.cmake

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ macro(az_vcpkg_integrate)
2222
if(NOT DEFINED ENV{AZURE_SDK_DISABLE_AUTO_VCPKG})
2323
# GET VCPKG FROM SOURCE
2424
# User can set env var AZURE_SDK_VCPKG_COMMIT to pick the VCPKG commit to fetch
25-
set(VCPKG_COMMIT_STRING f0aa678b7471497f1adedcc99f40e1599ad22f69) # default SDK tested commit
25+
set(VCPKG_COMMIT_STRING 6ca56aeb457f033d344a7106cb3f9f1abf8f4e98) # default SDK tested commit
2626
if(DEFINED ENV{AZURE_SDK_VCPKG_COMMIT})
2727
set(VCPKG_COMMIT_STRING "$ENV{AZURE_SDK_VCPKG_COMMIT}") # default SDK tested commit
2828
endif()

cmake-modules/PerfTest.cmake

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
macro(SetPerfDeps PACKAGE VAR_RESULT)
2+
string(TOUPPER ${PACKAGE} SUFFIX)
3+
string(CONCAT VAR_TRIGGER "VCPKG-" ${SUFFIX})
4+
message(STATUS "trigger name ${VAR_TRIGGER}")
5+
if(DEFINED ENV{${VAR_TRIGGER}})
6+
find_package(${PACKAGE} $ENV{${VAR_TRIGGER}} EXACT)
7+
add_compile_definitions(${VAR_RESULT}="$ENV{${VAR_TRIGGER}}")
8+
else()
9+
add_compile_definitions(${VAR_RESULT}="source")
10+
endif()
11+
endmacro()

doc/DistributedTracing.md

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -52,11 +52,7 @@ in-memory logger.
5252
opentelemetry::nostd::shared_ptr<opentelemetry::trace::TracerProvider>
5353
CreateOpenTelemetryProvider()
5454
{
55-
#if USE_MEMORY_EXPORTER
56-
auto exporter = std::make_unique<opentelemetry::exporter::memory::InMemorySpanExporter>();
57-
#else
58-
auto exporter = std::make_unique<opentelemetry::exporter::trace::OStreamSpanExporter>();
59-
#endif
55+
auto exporter = std::make_unique<MyExporter>();
6056

6157
// simple processor
6258
auto simple_processor = std::unique_ptr<opentelemetry::sdk::trace::SpanProcessor>(

doc/PerformanceTesting.md

Lines changed: 171 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,171 @@
1+
# Performance Testing
2+
3+
## Writing a test
4+
5+
Adding tests , at the moment relies in making modifications in a couple of repositories.
6+
7+
## Azure-SDK-For-Cpp repo
8+
9+
E.G. https://github.com/Azure/azure-sdk-for-cpp/tree/main/sdk/storage/azure-storage-blobs
10+
11+
### Location
12+
13+
Performance tests are located under **"test/perf"** folder under the service folder(e.g. alongside ut folder).
14+
15+
The perf test folder should be added in the parent CMakeLists.txt guarded by the **BUILD_PERFORMANCE_TESTS** flag.
16+
17+
E.G.
18+
19+
```markdown
20+
21+
if(BUILD_PERFORMANCE_TESTS)
22+
add_subdirectory(test/perf)
23+
endif()
24+
25+
```
26+
27+
### Structure
28+
29+
As any other CPP project you will need a **CMakeLists.txt** file , along side **src** and **inc** folders
30+
31+
#### Contents of the **inc** directory
32+
33+
Under inc folder create a subfolder structure following your namespace hierarchy ending with another test folder since these are in the ...Test namespace.
34+
35+
E.G. test/perf/inc/azure/storage/blobs/test
36+
37+
The tests are defined in .hpp files under this folder.
38+
39+
##### Test definition
40+
41+
In a .hpp file we define a class that will be contain the tests methods. The class is defined in the ::Test namespace for your service.
42+
43+
The class will inherit from the **PerfTest** base class and will override several methods as follows:
44+
- Constructor(Azure::Perf::TestOptions options) : PerfTest(options)
45+
Options field are passed from the perf test framework and constain the various options defined for running the test.
46+
- void Run(Azure::Core::Context const&) override {...}.
47+
Runs the actual test code. It is strongly recommended that the test code does as little extra work here as possible, it should consist solely of the actual test invocation. The test code should remove all assert, conditional statements ("if"/"else") or any other unnecessary work as any extra work will skew the results.
48+
- std::vector<Azure::Perf::TestOption> GetTestOptions() override
49+
Defines the various parameters for the test run that can be passed to the test from the performance framework. The perf framework uses these params to run various combinations(e.g. blob size)
50+
- static Azure::Perf::TestMetadata GetTestMetadata()
51+
Returns TestMetadate object used to identify the test.
52+
53+
#### Contents of the **src** directory
54+
55+
Contains one cpp file that contains the main method defintion
56+
57+
```cpp
58+
int main(int argc, char** argv)
59+
{
60+
std::cout << "SERVICE VERSION " << VCPKG_SERVICE_VERSION << std::endl;
61+
// Create the test list
62+
std::vector<Azure::Perf::TestMetadata> tests{
63+
Service::Namespace::Test::TestName::GetTestMetadata(),
64+
};
65+
66+
Azure::Perf::Program::Run(Azure::Core::Context::ApplicationContext, tests, argc, argv);
67+
68+
return 0;
69+
}
70+
```
71+
72+
#### CMakeLists.txt
73+
74+
Beyond the regular cmake defintion in your cmake file make sure to add
75+
76+
```makefile
77+
include(AzureVcpkg)
78+
az_vcpkg_integrate()
79+
...
80+
include(PerfTest)
81+
SETPERFDEPS(azure-storage-blobs-cpp VCPKG_SERVICE_VERSION)
82+
```
83+
84+
The crucial part here is the SETPERFDEPS cmake macro.
85+
The perf framework will set an environment variable based on the service name with the value representing a version, thus allowing to run the tests against diffrent VCPKG published versions. If the env is not defined then the test will build against the current source code of the service.
86+
There can be multiple set perf for each dependency of the service ( e.g. identity, storage).
87+
88+
## Pipeline definition
89+
The file should be named `perf.yml`, and should be located in the service directory that is to be tested, for consistency and to keep service related resources in the service folder.
90+
91+
```yml
92+
parameters:
93+
- name: PackageVersions
94+
displayName: PackageVersions (regex of package versions to run)
95+
type: string
96+
default: '12|source'
97+
- name: Tests
98+
displayName: Tests (regex of tests to run)
99+
type: string
100+
default: '^(download|upload|list-blobs)$'
101+
- name: Arguments
102+
displayName: Arguments (regex of arguments to run)
103+
type: string
104+
default: '(10240)|(10485760)|(1073741824)|(5 )|(500 )|(50000 )'
105+
- name: Iterations
106+
displayName: Iterations (times to run each test)
107+
type: number
108+
default: '5'
109+
- name: AdditionalArguments
110+
displayName: AdditionalArguments (passed to PerfAutomation)
111+
type: string
112+
default: ' '
113+
114+
extends:
115+
template: /eng/pipelines/templates/jobs/perf.yml
116+
parameters:
117+
ServiceDirectory: service folder
118+
Services: "^service name$"
119+
PackageVersions: ${{ parameters.PackageVersions }}
120+
Tests: ${{ parameters.Tests }}
121+
Arguments: ${{ parameters.Arguments }}
122+
Iterations: ${{ parameters.Iterations }}
123+
AdditionalArguments: ${{ parameters.AdditionalArguments }}
124+
InstallLanguageSteps:
125+
- pwsh: |
126+
Write-Host "##vso[task.setvariable variable=VCPKG_BINARY_SOURCES_SECRET;issecret=true;]clear;x-azblob,https://cppvcpkgcache.blob.core.windows.net/public-vcpkg-container,,read"
127+
displayName: Set Vcpkg Variables
128+
129+
EnvVars:
130+
# This is set in the InstallLanguageSteps
131+
VCPKG_BINARY_SOURCES_SECRET: $(VCPKG_BINARY_SOURCES_SECRET)
132+
133+
```
134+
135+
The fields of interest here are the parameters:
136+
- Tests which define which test s run in this pipeline ( which tests are available)
137+
- Arguments which allow to filter which subset of parameters are acceptable for the tests from the plurality in the framework
138+
- ServiceDirectory which represents the root folder of the service
139+
- Services which represents the services which these tests target.
140+
141+
## Resources
142+
143+
If the tests require certain resources to exist beforehand the pipeline can deploy them based on the presence of the **perf-resources.bicep** file which will be used to deploy the required resources defined within.
144+
145+
## Azure-SDK-Tools repo
146+
147+
## Location
148+
149+
The performance automation is located under azure-sdk-tools\tools\perf-automation\Azure.Sdk.Tools.PerfAutomation folder.
150+
(https://github.com/Azure/azure-sdk-tools/tree/main/tools/perf-automation/Azure.Sdk.Tools.PerfAutomation)
151+
152+
## Test definition
153+
154+
in the above mentioned folder resided the test defintion file "tests.yml".
155+
156+
### The tests exists in other languages
157+
158+
If the test exists in other languages then making the CPP version visible to the framework requires adding an entry with the name **CPP** under **Service**/**Languages** followed by the packages and versions available for the testing(this ties into the CMakeLists SetPerfDeps macro).
159+
160+
Next under the **Tests**/**Test** node with the desired name add the CPP test name. In this section mind the aArguments list , this ies with the regex in the cpp sdk pipeline.yml definition.
161+
162+
### The test does not exist in other languages
163+
164+
In this case you are the first to add the required nodes. The defintion is fairly simple and straightforward.
165+
166+
## Pipeline
167+
168+
Once you have everything in place create a pipeline using the definition in your in the cpp repo by going to https://dev.azure.com/azure-sdk/internal/_build?definitionScope=%5Cperf and create a new one under the cpp node.
169+
170+
To test intermediate definitions of your pipeline you can run the https://dev.azure.com/azure-sdk/internal/_build?definitionId=5121 pipline and set the proper values for the cpp node( make sure to deselect all other languages except cpp unless you want to run them).
171+

eng/common/TestResources/New-TestResources.ps1

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -723,29 +723,27 @@ try {
723723
Log $msg
724724

725725
$deployment = Retry {
726-
$lastDebugPreference = $DebugPreference
727-
try {
728-
if ($CI) {
729-
$DebugPreference = 'Continue'
730-
}
731-
New-AzResourceGroupDeployment -Name $BaseName -ResourceGroupName $resourceGroup.ResourceGroupName -TemplateFile $templateFile.jsonFilePath -TemplateParameterObject $templateFileParameters -Force:$Force
732-
} catch {
733-
Write-Output @'
726+
New-AzResourceGroupDeployment `
727+
-Name $BaseName `
728+
-ResourceGroupName $resourceGroup.ResourceGroupName `
729+
-TemplateFile $templateFile.jsonFilePath `
730+
-TemplateParameterObject $templateFileParameters `
731+
-Force:$Force
732+
}
733+
734+
if ($deployment.ProvisioningState -ne 'Succeeded') {
735+
Write-Host "Deployment '$($deployment.DeploymentName)' has state '$($deployment.ProvisioningState)' with CorrelationId '$($deployment.CorrelationId)'. Exiting..."
736+
Write-Host @'
734737
#####################################################
735738
# For help debugging live test provisioning issues, #
736-
# see http://aka.ms/azsdk/engsys/live-test-help, #
739+
# see http://aka.ms/azsdk/engsys/live-test-help #
737740
#####################################################
738741
'@
739-
throw
740-
} finally {
741-
$DebugPreference = $lastDebugPreference
742-
}
742+
exit 1
743743
}
744744

745-
if ($deployment.ProvisioningState -eq 'Succeeded') {
746-
# New-AzResourceGroupDeployment would've written an error and stopped the pipeline by default anyway.
747-
Write-Verbose "Successfully deployed template '$($templateFile.jsonFilePath)' to resource group '$($resourceGroup.ResourceGroupName)'"
748-
}
745+
Write-Host "Deployment '$($deployment.DeploymentName)' has CorrelationId '$($deployment.CorrelationId)'"
746+
Write-Host "Successfully deployed template '$($templateFile.jsonFilePath)' to resource group '$($resourceGroup.ResourceGroupName)'"
749747

750748
$deploymentOutputs = SetDeploymentOutputs $serviceName $context $deployment $templateFile
751749

0 commit comments

Comments
 (0)