* Add test result uploading
* Use -T
* Add displayName and buildConfiguration
* Add live testing result upload
* buildConfiguration -> testRunTitle
* Live tests 'Validate' -> 'ValidateLive' to differentiate job names in Test results output
* 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
* Consume Codeowners parser library, ceperate users from teams in codeownerse
* Update get-pr-owners and related logic
Co-authored-by: Chidozie Ononiwu <chononiw@microsoft.com>
* Fix up identity resolver to make it more reliable, publish notification configuration as a tool
* Use both username and email to resolve queuing user
Co-authored-by: Chidozie Ononiwu <chononiw@microsoft.com>
* Mitigate relative path calculation error on multiple iterations
* Revert "Mitigate relative path calculation error on multiple iterations"
This reverts commit 45baedd990c6a3085742a38a4891d8706a93be77.
* GetRelativePath should check if path is already relative before calling [IO.Path]::GetRelativePath
Co-authored-by: Daniel Jurek <djurek@microsoft.com>
* Handle assembly already loaded errors in deploy stress test script
* Add dependency checks and installation links to deploy-stress-tests.ps1
Co-authored-by: Ben Broderick Phillips <bebroder@microsoft.com>
* Remove empty sections in changelog entry as part of prepare release
* Update SECTIONS_HEADER_REGEX to accomodate various header levels
Co-authored-by: Chidozie Ononiwu <chononiw@microsoft.com>
* Common pipeline template and script to detect API changes
* Cahnges as per review comments
* Review comment changes
* CCahgnes as per review comments
* Show warning for list of failed packages to detect API changes
* Apply suggestions from code review
Co-authored-by: Wes Haggard <weshaggard@users.noreply.github.com>
Co-authored-by: praveenkuttappan <prmarott@microsoft.com>
Co-authored-by: praveenkuttappan <55455725+praveenkuttappan@users.noreply.github.com>
Co-authored-by: Wes Haggard <weshaggard@users.noreply.github.com>
* Make ServiceName optional for verify-changelog
In cases like go where we don't pass a service name having this default to "not-specified" breaks things so we should allow for ServiceName and/or ServiceDirectory to be empty.
* Put quotes around the strings to allow for empty
Co-authored-by: Wes Haggard <weshaggard@users.noreply.github.com>
Since we are treating v0 versions as prerelease we need to make sure
we don't accidently start to add the bogus prerelease label in cases where
we call ToString() on the version.
Co-authored-by: Wes Haggard <weshaggard@users.noreply.github.com>
* Add ability to exit gracefully when all files in the diff are excluded
* Address case where cspell exits with an error when all files from the 'files' config list are excluded by the expressions in 'ignorePaths'
* Add tests
* Review feedback: impl goes at the bottom and should be treated as a script, logic for testing should happen above that and exit appropriately if running tests
* Import common instead of logging
* Enable strict mode
Co-authored-by: Daniel Jurek <djurek@microsoft.com>
* Doc Updates and Revisions for External Use
The focus of these changes is to revise the script to better support use
by external contributors and others outside of the Azure SDK ecosystem and
without access to the Microsoft AAD Tenant.
Changes include:
- Creation of a new Test Application service principal is now possible
from a non-Microsoft AAD tenant.
- When a new Test Application principal is created, the principle of least
privilege is now applied; the new Test Application is granted ownership
of the resource group associated with the test resources and no longer
has access to any other resources in the subscription.
- If an existing Test Application principal is specified, it will be
assigned ownership of the resource group created. This supports using
a Test Application principal without privileges at the subscription-level.
- When no provisioner is specified, the script is now executed in the
context of the caller rather than the Test Application principal.
This supports using a Test Application principal that has restricted
privileges and better aligns to the purpose of the Test Application
principal.
- The `$TestApplicationOid` is now explicitly bound at the time a new Test
Application principal is created rather than having to query for it later.
- Common error scenarios resulting from lack of permissions now provide
messaging with more context of why the failure occurred and suggest
remediation.
- Added new examples to illustrate the common call patterns needed by
external contributors running the script, outside of the Microsoft tenant
and Azure SDK ecosystem.
- Documentation has been enhanced with additional context to detail the
permissions and roles assigned by the script.
- Added documentation details for Bicep template use.
* Add the provisioner OID to the deployment params
Key Vault needs this to deploy Managed HSMs. There's a corresponding change necessary in test-resources.json I'll roll out across languages.
* Fixing typos and spelling mistakes
Co-authored-by: Jesse Squire <jesse.squire@gmail.com>
Co-authored-by: Heath Stewart <heaths@microsoft.com>
* Attempt tagging of @danieljurek in PRBody
* Attempt to assign reviewers
* Use codeowners, filter out groups, use a default owner, add comments to issue.
* Move variables to right level of config
* Set PrOwners variable
* Remove PR owners, requires admin permissions
* Escape DevOps variable to expand into string
* Add AuthToken
* Tweak portfile and codeowners to validate multiple artifact scenario
* Revert "Tweak portfile and codeowners to validate multiple artifact scenario"
This reverts commit bcc7a36119c7f399f1b079f51889d6ff0d499142.
* Review feedback
* Validate fallback logic
* Deal with empty list of owners
* Revert "Validate fallback logic"
This reverts commit ade2dff5a7d9cac9bb61fdc0f92cd50412b7c31c.
* ignore result of function
* changelog
* Add g++5 to CI legs
* use inline config for g++ 5
* update flag
* set default values for variables
* fix format
* Stress test deployment script resiliency fixes
* Use PSModule-Helpers to install powershell-yaml
Co-authored-by: Ben Broderick Phillips <bebroder@microsoft.com>
* More logging, faster matrix
* Verbose makefile
* Add code that is expected to cause failure
* Use clang with Ubuntu 20
* Install clang-format-11 in another step
* Revert "Add code that is expected to cause failure"
This reverts commit 7ff7201e1b81e17c168b7598f0d23c489b5e6f43.
* Remove cmake args, add build args -j
* Attempt to purge all vaults, managed HSMs
Reverts #1910. Vaults and managed HSMs are automatically purged on their purge date. The point was to purge them daily to preserve capacity. The default purge date is +90 days.
* Add timeout and more logging
* Pass required -Resource
* Fix log message
* Ensure the $Resource is correctly captured
Added comment to new code explaining why, since ScriptBlock.GetNewClosure() is not working as expected.
* Add -ErrorAction to Receive-Job
Worked without terminating when run locally, but failed on the first error in the AzDO agent.
* Use $using:r instead of creating ScriptBlock
More idiomatic for passing ScriptBlocks to jobs.
* Resolve PR feedback
* Change default DeleteAfterHours to 120
Resolves#1917
* Use the Az cmdlets built-in -AsJob
Co-authored-by: Heath Stewart <heaths@microsoft.com>
- Fix rg.Name to rg.ResourceGroupName
- Add more verbose logging for better debugging
- Handle deleted resource groups when gathering puragable resource
- Remove coerce now that we are collecting in functions
Co-authored-by: Wes Haggard <Wes.Haggard@microsoft.com>
* Deploy for stress tests at resource group scope
* Automatically compile bicep files in stress test deploy script
Co-authored-by: Ben Broderick Phillips <bebroder@microsoft.com>
Explicitly add '/*' '!/*/' to the list of paths so we include
the files in the root of the repo.
Added some extra command logging so we can easily repro locally without
needing to find the code that ran.
Update to '/eng' so that we only get paths that start with eng instead
of every path that has eng as a folder.
Co-authored-by: Wes Haggard <Wes.Haggard@microsoft.com>
* Support building and deploying bicep templates
* Add bicep powershell install aka link to deployment error message
* Write bicep compiled arm templates to temp directory
* Simplify bicep building code/function usage
* Use bicep location for compiled arm templates, and remove them on success
Co-authored-by: Ben Broderick Phillips <bebroder@microsoft.com>
* Update change log headers based on guideline update
Updates based on https://github.com/Azure/azure-sdk/pull/3103
- Renamed "Key Bugs Fixed" to "Bugs Fixed"
- Renamed "Fixed" to "Other Changes"
Added a warning in validation if at lease one of the recommended
headers aren't used.
* Update eng/common/scripts/ChangeLog-Operations.ps1
Co-authored-by: JoshLove-msft <54595583+JoshLove-msft@users.noreply.github.com>
Co-authored-by: Wes Haggard <Wes.Haggard@microsoft.com>
Co-authored-by: Wes Haggard <weshaggard@users.noreply.github.com>
Co-authored-by: JoshLove-msft <54595583+JoshLove-msft@users.noreply.github.com>
* Put dependency versions
* Update version
* Core does not have any 1.1 functionality
* Core 1.1
* 1.1.0
Co-authored-by: Anton Kolesnyk <antkmsft@users.noreply.github.com>
* Add dependency on LiveTest to release
* Add DependsOn to archetype-cpp-release.yml stages, conditions around LiveTest (if we don't execute live tests don't require them for release)
* Remove template conditions for LiveTest and always require it
* Revert "Remove template conditions for LiveTest and always require it"
This reverts commit dc0615ca084b7bb476cbc3806df70f92f2bf0304.
* Bring changes from JS docs metadata
* Move business logic inside Update-DocsMsMetadata.ps1
* Update with the latest changes in JS PR
* Update from latest PR feedback
* Add check for empty path to prevent crashes when creating relative paths
Co-authored-by: Daniel Jurek <djurek@microsoft.com>
- Switch to using rest instead of cli for querying work items
as cli is limited to 1000 items only.
- Fix issues with Generated fields not being set.
- Correctly sort older workitems by version isntead of string.
Co-authored-by: Wes Haggard <Wes.Haggard@microsoft.com>
* Check for API review status only if release date is set in changelog
* Change property name to ReleaseStatus
Co-authored-by: Praveen Kuttappan <praveen.kuttappan@gmail.com>
* Update pipeline generation tool version
Consume latest changes from pipeline generation tool in https://github.com/Azure/azure-sdk-tools/pull/1708
* Update tool version to include fix for public ci
Co-authored-by: Wes Haggard <weshaggard@users.noreply.github.com>
* vcpkg.json -- update all links to point to "main" .. This is hardcoded and will go out in future releases.
* ci.yml -- add `- main` to trigger criteria near `- master` ... This adds forward compatilbitiy when we rename the branch in the repo
* archetype-cpp-release.yml use a script which evaluates a repo's default branch and sets that in a global variable, then use that variable instead. When vcpkg updates their branch the publishing scripts will work transparently.
* Collect-Changelogs.ps1 -- Add default hardcoded branch name for use with future releases. This can be optionally overridden with a parameter when invoking the script.
* eng/pipelines/client.yml -- Delete this file. It is no longer in use.
* Add API status check
* Revert temp change
* Update as per review comments
* Removed blank line
* Review comments to use az cli
* Changes to move az cli commands to caller script and other review comments
* Skip languages that's not supported in APIView
* Fix bug in language mapping
Co-authored-by: praveenkuttappan <prmarott@microsoft.com>
- Remove copied AzPowershell utilities
- Add latest AZ module path already on hosted agents to PSModulePath
- Rename setup-az-modules template setup-environments to reflect what is is doing
- Add support for Caching the current user PS Module folder
- Add support for install-module if not already present in module folder
- Organize the live test clean-up script to be in the standard location
Co-authored-by: Wes Haggard <Wes.Haggard@microsoft.com>
* Update common engineering system for docs onboarding
* Add updates from review feedback
* Space nit
Co-authored-by: Daniel Jurek <djurek@microsoft.com>
Part of https://github.com/Azure/azure-sdk-for-cpp/issues/1277, checking what types of warnings the CI emits.
Verified all SDK product `.cpp`, `.hpp`, `.txt`, and `.md` files, primarily focused on azure-core. They are all clean now. There are some exceptions that needs to be added for keyvault and storage, but they are false positives, so not a concern.
> `cspell lint --config .vscode/cspell.json *.hpp */**/*.hpp`
CSpell: Files checked: 188, Issues found: 0 in 0 files
> `cspell lint --config .vscode/cspell.json *.cpp */**/*.cpp`
CSpell: Files checked: 186, Issues found: 88 in 15 files (keyvault and storage false positives, or tests)
> `cspell lint --config .vscode/cspell.json *.md */**/*.md`
CSpell: Files checked: 45, Issues found: 5 in 2 files (eng/common)
> `cspell lint --config .vscode/cspell.json *.txt */**/*.txt`
CSpell: Files checked: 44, Issues found: 0 in 0 files
> `cspell lint --config .vscode/cspell.json *.* */**/*`
CSpell: Files checked: 646, Issues found: 328 in 69 files (most of these are in eng\docs\api\assets\style.css or eng/common)
Deprioritize and ignored the errors from the test files (including test resource json files), and `eng/common` since those need to be centrally fixed.
DevOps helper scripts were updated in azure-sdk repo
so syncing those changes into the tools repo so they
can be used prepare-release script.
Co-authored-by: Wes Haggard <Wes.Haggard@microsoft.com>
This will allow us to point our verify-link script at a raw
MD file in a github repo and have it parsed correctly for
links.
Co-authored-by: Wes Haggard <Wes.Haggard@microsoft.com>
Co-authored-by: Wes Haggard <weshaggard@users.noreply.github.com>
* Use linux for vcpkg release
* Force lf line endings
* Set config correctly
* Better core.eol syntax and sequencing
* Try using linux host which uses LF by default
* Revert "Try using linux host which uses LF by default"
This reverts commit 160eb22b647e851a50f9d1e7b157a1e385fe946f.
* Use vcpkg.exe to format the manifest
* Spell correctly
* Move format-manfiest
- Update link checking pipeline to enable caching
- Add loading cache file from a http endpoint
- Add retry logic when hitting 429
Fix verify link renaming scenarios
- Correctly error if link format is incorrect
- Handle case where the replace regex is not passed
- Improve the error logging so it is easier to
identify the broken links
- This removes the ci.yml filtering which means all projects can be discovered
- This eliminates the need for the yml parsing module for most common scenarios
- This does introduce some potential issues with duplicate package names for
languages like java. The only known case currently is azure-storage-blobs and
if there is ever a need to explicitly pick the correct one someone can pass
in the ServiceDirectory filter similar to "storage/azure*" for new and "storage/microsoft*"
for the older sdk. By default azure usually comes first so the new one gets discovered
which is likely all we need for now. If this turns out not to be true we might
need another way to disambiguate.
Co-authored-by: Wes Haggard <Wes.Haggard@microsoft.com>
Co-authored-by: Wes Haggard <weshaggard@users.noreply.github.com>
* Update vcpkg ports to use a manifest json file instead of a CONTROL file.
* Update vcpkg ports to use a manifest json file instead of a CONTROL file
for remaining packages.
* Add the new vcpkg manifet json files and also update the template
package.
* Update paths in the cmake and eng scripts to find the right file now
that CONTROL is gone.
* Handle empty files in Test-SampleMetadata
Relates to Azure/azure-sdk-for-java#20684
* Remove condition from verify-samples
* Use forward slash in path
* Fix directory typo
Co-authored-by: Heath Stewart <heaths@microsoft.com>
* Verify samples during CIs
Replaces Azure/azure-sdk-for-python#17999 for use in all language repos.
* Move exit to proper scope
Co-authored-by: Heath Stewart <heaths@microsoft.com>
* Remove passing -Mode Complete to deployment
When passing Complete it will remove any resources
already in the resource group that weren't part
of the current deployment. That removal breaks a
lot of assumptions, like multiple deployments when
testing things like smoke-tests or if you are reusing
an existing resource group. We don't want that to happen.
* Remove ServiceDirectory as required parameter for remove/update
When this was made mandatory it broke some usages which didn't
pass the value. Those usages don't need to pass it because
the pass required information in other ways so removing the
requirement for the parameter to be passed.
Co-authored-by: Wes Haggard <Wes.Haggard@microsoft.com>
Initializing the BaseName with a ServiceDirectory that contains
a "/", because it is a multiple level path, causes the BaseName
initialization code to fail because it doesn't support the
validation pattern.
In all the known cases we already pass the ResourceGroupName
explicitly so don't need to set the BaseName so we can
skip the initialization in those cases.
Co-authored-by: Wes Haggard <Wes.Haggard@microsoft.com>
* Use SubscriptionId throughout TestResources
Fixes#1454
* Resolve PR feedback
* Default DeleteAfterHours to 48 for SDK team
Also makes a few other adjustments for subscriptions, like restoring the previous one if available and another was specified.
* Resolve PR feedback
* Change deployment mode to Complete
Also fixes an issue where if the user opted not to deploy to the same resource group, the script would continue execution anyway.
* Use consistent aka links to satisfy link checker
Only need it for the new Update-TestResources.ps1 script, but I wanted them to look consistent.
Co-authored-by: Heath Stewart <heaths@microsoft.com>
* Fix issue where 2d index arrays with length 1 get flattened by powershell
* Pass NonSparseParameters to imported matrix generation
Co-authored-by: Ben Broderick Phillips <bebroder@microsoft.com>
* Add chagelogpath to Update-ChangeLog.ps1
* Make PackageName and ServiceDirectory not mandatory, test ChangelogPath
Co-authored-by: Chidozie Ononiwu <chononiw@microsoft.com>
* Handle null values when generating display names
* Fix issue processing matrices where the base matrix is only an import
Co-authored-by: Ben Broderick Phillips <bebroder@microsoft.com>
* Fixup CHANGELOG.md, add SetPackageVersion, add calls to set-test-pipeline-version.yml
* Run set-test-pipeline-version.yml per artifact, open testpipeline as draft
* git diff to view changes in file
* Move set-test-pipeline-version.yml after Validate Clang Format
* remove second artifact loop in archetype-cpp-release.yml
* Add 'replace' support. Improve handling of dynamic parameter types.
* Support display name import and overrides
* Support regex capture groups for replace. Force fully matching regex.
Co-authored-by: Ben Broderick Phillips <bebroder@microsoft.com>
Pull only artifacts from `ci.yml` to resolve issue with conflicting package names.
Co-authored-by: Chidozie Ononiwu <31145988+chidozieononiwu@users.noreply.github.com>
* Update Package Properties Logic, make prepare release require only 1 argument, make rerun of Get-PkgProperties in Update-Changelog not required
* Remove ServiceDirectory parameter from PrepareRelease.ps1
* changes to argument names
* pass service directory to Get-AllPackageInfoFromRepo
* Remove changes in Update-ChangeLog.ps1
* updates to Package-Properties.ps1
Co-authored-by: Chidozie Ononiwu <chononiw@microsoft.com>
Co-authored-by: Chidozie Ononiwu <31145988+chidozieononiwu@users.noreply.github.com>
* Create a publish-artifact.yml template step within eng/common. This template utilizes PublishPipelineArtifactV1 to upload your artifact only in the case where steps up till the invocation are succeeded(). Otherwise, the artifacts will be uploaded to an alternate artifact name.
* Validate publishing before parameter refactor
Fix release yaml syntax
Environment variable naming
Remove flag
Remove checkout step
Reset the commit
Cleanup Update-VcpkgPort.ps1, mostly git reset HEAD^. Attempt to check out branch in remote.
Try putting CHANGELOG entry into commit message
Include common.ps1 for changelog operations
Correct path for common.ps1
Include the scripts folder as well
Quotes
Refactor to use release artifacts, perform the commit in Update-VcpkgPort.ps1, set parameters and variables needed to complete PR with the commit step already finished
* Add PR body
* Add newline
* Added more logging to API view create
* Updated logs with arch board rescue email address
* Fix as per review comments
* Update logging to show API URL
Co-authored-by: praveenkuttappan <prmarott@microsoft.com>