* changes
* vs generator
* use macro
* release and samples
* add target to build smoke test
* revert
* reuse macro for samples
* extra legs for samples only
* storage connection string
* format
* order and macro
* update
* samples
* missing
* cp
* cp
* cp
* Enable test proxy for perf tests
* unwanted
* format
* fix docs
* cspell
* parallel support and multi proxy
* update arg name
* more logs
* fix request redirection
* Apply suggestions from code review
Co-authored-by: Ahson Khan <ahkha@microsoft.com>
* run once before record, then after recording on
Co-authored-by: Ahson Khan <ahkha@microsoft.com>
* Increment package version after release of azure-storage-common
* Increment package version after release of azure-storage-files-datalake
* Increment package version after release of azure-storage-files-shares
* Increment package version after release of azure-storage-queues
* Set WinHTTP_OPTION_CLIENT_CERT_CONTEXT to enable connections to attestation service
* Set serviceDirectory from environment variables
Co-authored-by: Victor Vazquez <victor.vazquez@microsoft.com>
* Increment package version after release of azure-storage-common
* Increment package version after release of azure-storage-blobs
* Increment package version after release of azure-storage-files-datalake
* Increment package version after release of azure-storage-queues
It all started with UWP. The [docs](https://docs.microsoft.com/en-us/cpp/cppcx/crt-functions-not-supported-in-universal-windows-platform-apps?view=msvc-170) say: "`Environment variables are not available to UWP apps.`". And it truly won't work, I tried: linker error, the function is simply not present.
So, for a year or so, we were `ifdef`ing everything enivoronment-related: console logger, environment credential, managed identity credential.
And then just recently we wanted to enable our CI for UWP, including tests and samples. And it required to do more ifdefs (in vcpkg, we don't build samples or tests, so that problem did not exist).
It just became more messy. Especially in samples - you can see how we would disable warning with `#pragma warning(disable : 4996)` or defining `_CRT_SECURE_NO_WARNINGS` already, but now came UWP, so we would have to add comment that `getenv()` is not available and make the sample compilation to either fail with clear message, or throw an exception. Plus we would have to detect that we are being compiled on UWP, which also adds visual clutter for reader. You can see how such an irrelevant (for a sample) thing as `getenv` was consuming more and more lines of sample code and reader's attention.
But then! I read docs on more APIs for UWP. And I noticed that on .NET you can read environment variables. So I went and checked Win32 API docs for [GetEnvironmentVariable()](https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-getenvironmentvariable) - it says: "`Minimum supported client: ... UWP apps`".
**GetEnvironmentVariable() works on UWP!**
And so does `SetEnvironmentVariable()` (our tests use it, which means we can make all of them work and execute for UWP).
That's good news, but now it would probably be more code: it usually takes more lines to invoke WinAPI, it is no more an one-liner to call `getenv()/setenv()`. So, I encapsulated that into `Azure::Core::_internal::Environment::GetVariable()` and `SetVariable()`. You can see how much less ifdefs is in our code now. Not to mention it works on UWP!
Per team request, that API is SDK-internal. Samples use their own mini-helper project, `get-env-helper` that makes is so that `getenv()` works naturally on Linux and macOS, compiles without warnings and works on Win32, and compiles and works on UWP (using `GetEnvironmentStringsA()`)
If it was for me, I would just make `Azure::Core::Environment::GetVariable()` public and simplify even further, I think it would be beneficial for sample readers (you can see that extra `get-env-helper` stuff adds just a little more visual clutter, compared to nothing). But I can see reasons against that, why team did not want to do it.
* Generate map files in build
* Add .map file artifact publishing
* Add Xlinker to spelling exceptions
* Remove PublishMapFiles from clang builds
* Generate the map file artifact name
* CXX_COMPILER_ID and some logging for Clang which might be linking using the GNU linker by default
* More logging
* Move logging out of conditional
* Logging up high, use OS to determine which link flags to set
* Use linker options specific to AppleClang's context, publish map files for all platforms
* Update vcpkg to the newest published tag
* Update to latest commit sha from 12-02-2021
* Update to a commit sha from 11-10-2021, after last SDK release
* Treat third-party dependencies as system to avoid triggering warnings in code we don't control
* restructure storage samples
* Apply suggestions from code review
* Apply suggestions from code review
Co-authored-by: Victor Vazquez <victor.vazquez@microsoft.com>
* u
* u2
* fix link
* clang-format
Co-authored-by: Victor Vazquez <victor.vazquez@microsoft.com>
* Exclude test, samples, and 3rd party code from code coverage
* Update min coverage requirement to a true one
Co-authored-by: Anton Kolesnyk <antkmsft@users.noreply.github.com>
* Narrower build trigger matrix, introduce batching so changes to main don't trigger builds for every checkin if there are other builds running, expand core to test everything in CI
* Wire up CtestExcludeRegex
* Improvements including scoping to exclude storage tests
* Use correct trigger settings for storage
* Refactor template to use multiple builds on the same machine resetting the machine and runtime varaibles along the way
Move template expression out of default matrix parameters
Remove extra reference to ci/jobs.yml
Remove unnecessary ci.yml, change param declaration in devops-variables-set.yml
Heredoc
Fix set/reset scripts after testing with devops outputs
-ErrorAction Ignore
Smaller matrix
OsVMImage comes from machine, not parameters
Add Ubuntu 20 to matrix
Remove checkout: self, it is implied
Move machine-setup steps outside of loop
CODE_COVERAGE handling
tab
Remove creation of CODE_COVERAGE
Use AptDependencies and add apt update to dependency install step
Remove extra preparation steps
Enable code coverage check scenario
Add MacOS 11
Disable vcpkg cache
Coverage configuration
Pass parameter properly
bool -> boolean
Install coverage tools if it's possible that coverage may run
More logging on code coverage
Show contents of Makefile
One vcpkg to build them all
Verbose
SourcesDirectory
Nesting VcpkgInstall
workingDirectory for vcpkg install
AptDependencies
complete the conditional
Enable all matrix entries
sudo
Remove extra chatter
More scrubbing post-build to help with Windows scenarios
sudo echo
Get-ChildItem
ErrorAction
sudo sh -c
More ErrorAction
output sourceListFile
Disable additional sources.list
Install coverage tools when used for coverage
COndition
Do not build testing for Windows arm64
Correct path for coverage tools
ne -> eq
Add more scenarios to the matrix
Remove libxml2
Add MacOS 10.15 to matrix
Revert "Remove libxml2"
This reverts commit 178af8b89abb21ee84dbcd25b4d54bd90ec1d44c.
Add libxml2 to MacOS 10.15 matrix entry
Display name decorator, refine the matrix
Remove OsVmImage variable
Add commentary to tests about matrix
Rebalance matrix, nest EnvVars, DisplayNameDecorator
Correct parameter access
AptDependencies
Ensure building for WindowsStore in UWP builds, Only build tests for debug builds in altered matrix entires, Linux build type specified as environment variable
Rebalance matrix for better timing
Remove all instances of libxml2 in vcpkg dependencies
Move common devops tasks to eng/common
Set eng/common paths in pipelines
Revert "Remove all instances of libxml2 in vcpkg dependencies"
This reverts commit 35ffbc7aac87f400fdf3351076346750c1c750ed.
https://github.com/Azure/azure-sdk-for-cpp/issues/2946
Permit words like iname in more pipeline .yml files
Remove libxml2 from vcpkg dependencies for Windows
Perf test matrix maxParallel: 10
Validate
apt install first
apt install first
maxParallel: 12
-j 8
-j 10
Use matrix generator
Add expected parameters
Move parameters to appropriate file, fix cloud spec
Specify correct platform matrix location
DependsOn
Platform matrix
Remove DisplayNameDecorator, try more clang information
Rapid iteration matrix
clang --version
install clang-11
Use correct pool
Use full matrix, revert additional logic in jobs/ci.yml
* Review feedback: newline
* Review feedback: Test in release, too
* Remove DisplayNameDecorator (it was useful when we were putting multiple builds into a single job, now it is redundant)
* Remove displayNames
* Matrix review feedback
* Conditions
* Rename ci.yml -> ci.tests.yml