diff --git a/eng/pipelines/templates/jobs/archetype-sdk-client.yml b/eng/pipelines/templates/jobs/archetype-sdk-client.yml
index 6843243b23b25..e79ee99fe20ae 100644
--- a/eng/pipelines/templates/jobs/archetype-sdk-client.yml
+++ b/eng/pipelines/templates/jobs/archetype-sdk-client.yml
@@ -1,4 +1,5 @@
parameters:
+ SDKType: not-specified # Set a default that breaks in obvious ways.
ServiceDirectory: not-specified # Set a default that breaks in obvious ways.
PreTestSteps: []
TestOptions: '$(DefaultOptions)'
@@ -72,15 +73,13 @@ jobs:
- ${{ each artifact in parameters.Artifacts }}:
- script: |
python3 --version
- python3 eng/versioning/set_versions.py --update-type all --build-type client --build-qualifier dev.$(Build.BuildNumber) --artifact-id ${{artifact.name}}
- python3 eng/versioning/set_versions.py --update-type all --build-type data --build-qualifier dev.$(Build.BuildNumber) --artifact-id ${{artifact.name}}
+ python3 eng/versioning/set_versions.py --build-type ${{parameters.SDKType}} --build-qualifier dev.$(Build.BuildNumber) --artifact-id ${{artifact.name}} --group-id ${{artifact.groupId}}
condition: eq(variables['SetDevVersion'],'true')
displayName: Append dev package version suffix for ${{artifact.name}}
- script: |
python3 --version
- python3 eng/versioning/update_versions.py --update-type all --build-type client
- python3 eng/versioning/update_versions.py --update-type all --build-type data
+ python3 eng/versioning/update_versions.py --update-type library --build-type ${{parameters.SDKType}}
condition: eq(variables['SetDevVersion'],'true')
displayName: Apply version settings to repository
@@ -254,7 +253,7 @@ jobs:
- task: Maven@3
displayName: 'Start Jetty'
- condition: ne(variables['SdkType'], 'client')
+ condition: ne('${{ parameters.SDKType }}', 'client')
inputs:
mavenPomFile: pom.client.xml
options: '$(DefaultOptions)'
@@ -271,7 +270,7 @@ jobs:
displayName: 'Use Python 3.6'
inputs:
versionSpec: '3.6'
- condition: and(ne(variables['SdkType'], 'data'), eq(variables['TestFromSource'],'true'))
+ condition: and(eq('${{ parameters.SDKType }}', 'client'), eq(variables['TestFromSource'],'true'))
- pwsh: |
python --version
@@ -288,7 +287,7 @@ jobs:
exit 1
}
displayName: 'Set versions for source build'
- condition: and(ne(variables['SdkType'], 'data'), eq(variables['TestFromSource'],'true'))
+ condition: and(eq('${{ parameters.SDKType }}', 'client'), eq(variables['TestFromSource'],'true'))
- script: |
python --version
diff --git a/eng/pipelines/templates/stages/archetype-sdk-client.yml b/eng/pipelines/templates/stages/archetype-sdk-client.yml
index 30d3992cafe00..a23ff5fa3967d 100644
--- a/eng/pipelines/templates/stages/archetype-sdk-client.yml
+++ b/eng/pipelines/templates/stages/archetype-sdk-client.yml
@@ -8,6 +8,7 @@ stages:
- template: ../jobs/archetype-sdk-client.yml
parameters:
ServiceDirectory: ${{parameters.ServiceDirectory}}
+ SDKType: ${{parameters.SDKType}}
Artifacts: ${{parameters.Artifacts}}
# The Prerelease and Release stages are conditioned on whether we are building a pull request and the branch.
@@ -15,5 +16,7 @@ stages:
- template: pipelines/stages/archetype-java-release.yml@azure-sdk-build-tools
parameters:
DependsOn: Build
+ ServiceDirectory: ${{parameters.ServiceDirectory}}
+ SDKType: ${{parameters.SDKType}}
Artifacts: ${{parameters.Artifacts}}
- ArtifactName: packages
\ No newline at end of file
+ ArtifactName: packages
diff --git a/eng/pipelines/templates/stages/cosmos-sdk-client.yml b/eng/pipelines/templates/stages/cosmos-sdk-client.yml
index d335cdd44faf0..7955530ea8a52 100644
--- a/eng/pipelines/templates/stages/cosmos-sdk-client.yml
+++ b/eng/pipelines/templates/stages/cosmos-sdk-client.yml
@@ -8,6 +8,7 @@ stages:
- template: ../jobs/archetype-sdk-client.yml
parameters:
ServiceDirectory: ${{parameters.ServiceDirectory}}
+ SDKType: ${{parameters.SDKType}}
Artifacts: ${{parameters.Artifacts}}
TestMatrix:
Windows - java8:
@@ -114,6 +115,8 @@ stages:
- template: pipelines/stages/archetype-java-release.yml@azure-sdk-build-tools
parameters:
DependsOn: Build
+ ServiceDirectory: ${{parameters.ServiceDirectory}}
+ SDKType: ${{parameters.SDKType}}
Artifacts: ${{parameters.Artifacts}}
ArtifactName: packages
diff --git a/eng/versioning/scan_for_unreleased_dependencies.ps1 b/eng/versioning/scan_for_unreleased_dependencies.ps1
new file mode 100644
index 0000000000000..3da06a45c92d8
--- /dev/null
+++ b/eng/versioning/scan_for_unreleased_dependencies.ps1
@@ -0,0 +1,80 @@
+param(
+ [Parameter(Mandatory=$true, Position=0)]
+ [System.String] $inputGroupId,
+ [Parameter(Mandatory=$true, Position=1)]
+ [System.String] $inputArtifactId,
+ [Parameter(Mandatory=$true, Position=2)]
+ [System.String] $serviceDirectory
+)
+
+# Given an input groupId, artifactId and root service directory, scan the service directory for the
+# POM file that matches the group/artifact. If the POM file is found, scan for any unreleased_ dependency
+# tags otherwise report an error. If there are unreleased dependency tags then report them and return an
+# error, otherwise report success and allow the release to continue.
+
+$script:FoundPomFile = $false
+$script:FoundError = $false
+function Write-Error-With-Color([string]$msg)
+{
+ Write-Host "$($msg)" -ForegroundColor Red
+}
+
+Write-Host "inputGroupId=$($inputGroupId)"
+Write-Host "inputArtifactId=$($inputArtifactId)"
+Write-Host "serviceDirectory=$($serviceDirectory)"
+
+# Scan each pom file under the service directory until we find the pom file for the input groupId/artifactId. If
+# found then scan that pomfile for any unreleased dependency tags.
+Get-ChildItem -Path $serviceDirectory -Filter pom*.xml -Recurse -File | ForEach-Object {
+ $pomFile = $_.FullName
+ $xmlPomFile = New-Object xml
+ $xmlPomFile.Load($pomFile)
+ if (($xmlPomFile.project.groupId -eq $inputGroupId) -and ($xmlPomFile.project.artifactId -eq $inputArtifactId)) {
+ $script:FoundPomFile = $true
+ Write-Host "Found pom file with matching groupId($($inputGroupId))/artifactId($($inputArtifactId)), pomFile=$($pomFile)"
+
+ # Verify there are no unreleased dependencies
+ foreach($dependencyNode in $xmlPomFile.GetElementsByTagName("dependency"))
+ {
+ $artifactId = $dependencyNode.artifactId
+ $groupId = $dependencyNode.groupId
+ $versionNode = $dependencyNode.GetElementsByTagName("version")[0]
+ if (!$versionNode)
+ {
+ $script:FoundError = $true
+ Write-Error-With-Color "Error: dependency is missing version element for groupId=$($groupId), artifactId=$($artifactId) should be "
+ continue
+ }
+ # if there is no version update tag for the dependency then fail
+ if ($versionNode.NextSibling -and $versionNode.NextSibling.NodeType -eq "Comment")
+ {
+ $versionUpdateTag = $versionNode.NextSibling.Value.Trim()
+ if ($versionUpdateTag -match "{x-version-update;unreleased_$($groupId)")
+ {
+ $script:FoundError = $true
+ Write-Error-With-Color "Error: Cannot release libraries with unreleased dependencies. dependency=$($versionUpdateTag)"
+ continue
+ }
+ }
+ else
+ {
+ $script:FoundError = $true
+ Write-Error-With-Color "Error: Missing dependency version update tag for groupId=$($groupId), artifactId=$($artifactId). The tag should be "
+ continue
+ }
+ }
+ } else {
+ return
+ }
+}
+
+if (-Not $script:FoundPomFile) {
+ Write-Error-With-Color "Did not find pom file with matching groupId=$($groupId) and artifactId=$($artifactId) under serviceDirectory=$($serviceDirectory)"
+ exit(1)
+}
+if ($script:FoundError) {
+ Write-Error-With-Color "Libaries with unreleased dependencies cannot be released."
+ exit(1)
+}
+
+Write-Host "$($inputGroupId):$($inputArtifactId) looks goood to release" -ForegroundColor Green
\ No newline at end of file
diff --git a/eng/versioning/set_versions.py b/eng/versioning/set_versions.py
index 37e1abca5fc06..a0088e1bdd996 100644
--- a/eng/versioning/set_versions.py
+++ b/eng/versioning/set_versions.py
@@ -3,6 +3,8 @@
# Python version 3.4 or higher is required to run this script.
+# Nobody outside of the EngSys team should actually be using this script which is primarily
+# used for version verification and manipulation in the pipeline automation.
# Use case: Append the build qualifier onto the existing version in such a way that the
# resulting version string is still in semver format. This will be utilized by the build
# system to modify the version string to produce nightly DevOps builds.
@@ -49,12 +51,15 @@
version_regex_named = re.compile(version_regex_str_with_names_anchored)
prerelease_regex_named = re.compile(prerelease_version_regex_with_name)
-def update_versions_file_for_nightly_devops(update_type, build_type, build_qualifier, artifact_id):
+def update_versions_file_for_nightly_devops(build_type, build_qualifier, artifact_id, group_id):
version_file = os.path.normpath('eng/versioning/version_' + build_type.name + '.txt')
print('version_file=' + version_file)
+ library_to_update = group_id + ':' + artifact_id
+ print('adding build_qualifier({}) to {}'.format(build_qualifier, library_to_update))
version_map = {}
newlines = []
+ artifact_found = False
with open(version_file, encoding='utf-8') as f:
for raw_line in f:
stripped_line = raw_line.strip()
@@ -64,49 +69,55 @@ def update_versions_file_for_nightly_devops(update_type, build_type, build_quali
module = CodeModule(stripped_line)
# basically we don't want to change any of the parent versions here, only
# library versions
- if not artifact_id and module.name in items_we_should_not_update:
+ if module.name in items_we_should_not_update:
newlines.append(module.string_for_version_file())
continue
- if not artifact_id or module.artifact_id == artifact_id:
- if (update_type == UpdateType.library or update_type == UpdateType.all):
- if hasattr(module, 'current'):
- set_both = False
- # In the case where the current and dependency are both equal then both
- # need to be updated. In theory, this should only really happen when a
- # new library has been added and has not yet been released but can also
- # happen if a library has just been released and the devops build kicks
- # of before the human submits the PR to increase the current version. Being
- # that it's a devops build and both versions are being updated this should
- # be OK.
- if module.current == module.dependency:
- set_both = True
- if '-' in module.current:
- module.current += "." + build_qualifier
- else:
- module.current += '-' + build_qualifier
- match = version_regex_named.match(module.current)
- if not match:
- raise ValueError('{}\'s current version + build qualifier {} is not a valid semver version'.format(module.name, module.current + build_qualifier))
- if set_both:
- module.dependency = module.current
- # we need to handle the unreleased dependency which should have the same version as the "current" dependency
- # of the non-unreleased artifact
+ if library_to_update == module.name:
+ artifact_found = True
+ if hasattr(module, 'current'):
+ set_both = False
+ # In the case where the current and dependency are both equal then both
+ # need to be updated. In theory, this should only really happen when a
+ # new library has been added and has not yet been released but can also
+ # happen if a library has just been released and the devops build kicks
+ # of before the human submits the PR to increase the current version. Being
+ # that it's a devops build and both versions are being updated this should
+ # be OK.
+ if module.current == module.dependency:
+ set_both = True
+ if '-' in module.current:
+ module.current += "." + build_qualifier
else:
- if (module.name.startswith('unreleased_')):
- # strip off the 'unreleased_' prepend to get the regular module entry
- real_name = module.name.replace('unreleased_', '')
- real_module = version_map[real_name]
- module.dependency = real_module.current
- else:
- raise ValueError('{}\' does not have a current dependency and its groupId does not the required unreleased_ prepend'.format(module.name))
+ module.current += '-' + build_qualifier
+ match = version_regex_named.match(module.current)
+ if not match:
+ raise ValueError('{}\'s current version + build qualifier {} is not a valid semver version'.format(module.name, module.current + build_qualifier))
+ if set_both:
+ module.dependency = module.current
+ # we need to handle the unreleased dependency which should have the same version as the "current" dependency
+ # of the non-unreleased artifact
+ else:
+ if (module.name.startswith('unreleased_')):
+ # strip off the 'unreleased_' prepend to get the regular module entry
+ real_name = module.name.replace('unreleased_', '')
+ real_module = version_map[real_name]
+ module.dependency = real_module.current
+ else:
+ raise ValueError('{}\' does not have a current dependency and its groupId does not have the required unreleased_ prepend'.format(module.name))
version_map[module.name] = module
newlines.append(module.string_for_version_file())
+ if not artifact_found:
+ raise ValueError('library_to_update ({}) was not found in version file {}'.format(library_to_update, version_file))
+
with open(version_file, 'w', encoding='utf-8') as f:
for line in newlines:
f.write(line)
-# Prep the appropriate version file for source
+# Prep the appropriate version file for source testing. What this really means is set the
+# all of the dependency versions to the current versions. This will effectively cause maven
+# to use the built version of the libraries for build and testing. The purpose of this is to
+# ensure current version compatibility amongst the various libraries for a given built type
def prep_version_file_for_source_testing(build_type):
version_file = os.path.normpath('eng/versioning/version_' + build_type.name + '.txt')
@@ -132,17 +143,13 @@ def prep_version_file_for_source_testing(build_type):
return file_changed
-# given a build type and artifact id
-def increment_version_for_artifact(build_type, artifact_id):
-
- if not build_type:
- raise ValueError('build_type cannot be empty.')
-
- if not artifact_id:
- raise ValueError('artifact_id cannot be empty.')
+# given a build type, artifact id and group id, set the dependency version to the
+# current version and increment the current version
+def increment_library_version(build_type, artifact_id, group_id):
version_file = os.path.normpath('eng/versioning/version_' + build_type.name + '.txt')
print('version_file=' + version_file)
+ library_to_update = group_id + ':' + artifact_id
artifact_found = False
newlines = []
@@ -157,11 +164,15 @@ def increment_version_for_artifact(build_type, artifact_id):
# version then just increment the revision. Otherwise increment the
# minor version, zero the patch and add "-beta.1" to the end
# https://github.com/Azure/azure-sdk/blob/master/docs/policies/releases.md#java
- if module.artifact_id == artifact_id and hasattr(module, 'current'):
+ if module.name == library_to_update and hasattr(module, 'current'):
artifact_found = True
vmatch = version_regex_named.match(module.current)
if (vmatch.group('prerelease') is not None):
prever = prerelease_regex_named.match(vmatch.group('prerelease'))
+ # This is the case where, somehow, the versioning verification has failed and
+ # the prerelease verification doesn't match "beta.X"
+ if prever is None:
+ raise ValueError('library_to_update ({}:{}) has an invalid prerelease version ({}) which should be of the format beta.X'.format(library_to_update, module.current, vmatch.group('prerelease')))
rev = int(prever.group('revision'))
rev += 1
new_version = '{}.{}.{}-beta.{}'.format(vmatch.group('major'), vmatch.group('minor'), vmatch.group('patch'), str(rev))
@@ -169,12 +180,17 @@ def increment_version_for_artifact(build_type, artifact_id):
minor = int(vmatch.group('minor'))
minor += 1
new_version = '{}.{}.{}-beta.1'.format(vmatch.group('major'), minor, 0)
- print('artifact_id {}, previous version={}, new current version={}'.format(artifact_id, module.current, new_version))
+ # The dependency version only needs to be updated it if is different from the current version.
+ # This would be the case where a library hasn't been released yet and has been released (either GA or preview)
+ if (module.dependency != module.current):
+ print('library_to_update {}, previous dependency version={}, new dependency version={}'.format(library_to_update, module.dependency, module.current))
+ module.dependency = module.current
+ print('library_to_update {}, previous version={}, new current version={}'.format(library_to_update, module.current, new_version))
module.current = new_version
newlines.append(module.string_for_version_file())
if not artifact_found:
- raise ValueError('artifact_id ({}) was not found in version file {}'.format(artifact_id, version_file))
+ raise ValueError('library_to_update ({}) was not found in version file {}'.format(library_to_update, version_file))
with open(version_file, 'w', encoding='utf-8') as f:
for line in newlines:
@@ -183,15 +199,11 @@ def increment_version_for_artifact(build_type, artifact_id):
# Verify that the current version of an artifact matches our versioning scheme. This is meant to be called
# as part of the release pipeline for a given artifact to verify that we don't accidentally release a version
# that doesn't match our versioning scheme
-def verify_current_version_of_artifact(build_type, artifact_id):
- if not build_type:
- raise ValueError('build_type cannot be empty.')
-
- if not artifact_id:
- raise ValueError('artifact_id cannot be empty.')
+def verify_current_version_of_artifact(build_type, artifact_id, group_id):
version_file = os.path.normpath('eng/versioning/version_' + build_type.name + '.txt')
print('version_file=' + version_file)
+ library_to_update = group_id + ':' + artifact_id
artifact_found = False
with open(version_file, encoding='utf-8') as f:
@@ -205,13 +217,13 @@ def verify_current_version_of_artifact(build_type, artifact_id):
# of the following:
# ..
# ..-beta.
- if module.artifact_id == artifact_id and hasattr(module, 'current'):
+ if module.name == library_to_update and hasattr(module, 'current'):
artifact_found = True
vmatch = version_regex_named.match(module.current)
temp_ver = '{}.{}.{}'.format(vmatch.group('major'), vmatch.group('minor'), vmatch.group('patch'))
# we should never have buildmetadata in our versioning scheme
if vmatch.group('buildmetadata') is not None:
- raise ValueError('artifact ({}) version ({}) in version file ({}) is not a correct version to release. buildmetadata is set and should never be {}'.format(artifact_id, module.current, version_file, vmatch.group('buildmetadata')))
+ raise ValueError('library ({}) version ({}) in version file ({}) is not a correct version to release. buildmetadata is set and should never be {}'.format(library_to_update, module.current, version_file, vmatch.group('buildmetadata')))
# reconstruct the version from the semver pieces and it should match exactly the current
# version in the module
@@ -220,7 +232,7 @@ def verify_current_version_of_artifact(build_type, artifact_id):
prerel = vmatch.group('prerelease')
if prerelease_regex_named.match(prerel) is None:
- raise ValueError('artifact ({}) version ({}) in version file ({}) is not a correct version to release. The accepted prerelease tag is (beta.X) and the current prerelease tag is ({})'.format(artifact_id, module.current, version_file, prerel))
+ raise ValueError('library ({}) version ({}) in version file ({}) is not a correct version to release. The accepted prerelease tag is (beta.X) and the current prerelease tag is ({})'.format(library_to_update, module.current, version_file, prerel))
prever = prerelease_regex_named.match(prerel)
rev = int(prever.group('revision'))
@@ -229,23 +241,27 @@ def verify_current_version_of_artifact(build_type, artifact_id):
# last but not least, for sanity verify that the version constructed from the
# semver pieces matches module's current version
if module.current != temp_ver:
- raise ValueError('artifact ({}) version ({}) in version file ({}) does not match the version constructed from the semver pieces ({})'.format(artifact_id, module.current, version_file, temp_ver))
+ raise ValueError('library ({}) version ({}) in version file ({}) does not match the version constructed from the semver pieces ({})'.format(library_to_update, module.current, version_file, temp_ver))
print('The version {} for {} looks good!'.format(module.current, module.name))
if not artifact_found:
- raise ValueError('artifact_id ({}) was not found in version file {}'.format(artifact_id, version_file))
+ raise ValueError('library ({}) was not found in version file {}'.format(library_to_update, version_file))
def main():
- parser = argparse.ArgumentParser(description='set version numbers in the appropriate version text file')
- parser.add_argument('--update-type', '--ut', type=UpdateType, choices=list(UpdateType))
- parser.add_argument('--build-type', '--bt', type=BuildType, choices=list(BuildType))
- parser.add_argument('--build-qualifier', '--bq', help='build qualifier to append onto the version string.')
- parser.add_argument('--artifact-id', '--ar', help='artifactId to target.')
- parser.add_argument('--prep-source-testing', '--pst', action='store_true', help='prep the version file for source testing')
- parser.add_argument('--increment-version', '--iv', action='store_true', help='increment the version for a given artifact')
- parser.add_argument('--verify-version', '--vv', action='store_true', help='verify the version for a given artifact')
+ parser = argparse.ArgumentParser(description='set version numbers in the appropriate version text file', add_help=False)
+ required = parser.add_argument_group('required arguments')
+ required.add_argument('--build-type', '--bt', type=BuildType, choices=list(BuildType), required=True)
+ optional = parser.add_argument_group('optional arguments')
+ optional.add_argument('--build-qualifier', '--bq', help='build qualifier to append onto the version string.')
+ optional.add_argument('--artifact-id', '--ai', help='artifactId of the target library')
+ optional.add_argument('--group-id', '--gi', help='groupId of the target library')
+ optional.add_argument('--prep-source-testing', '--pst', action='store_true', help='prep the version file for source testing')
+ optional.add_argument('--increment-version', '--iv', action='store_true', help='increment the version for a given group/artifact')
+ optional.add_argument('--verify-version', '--vv', action='store_true', help='verify the version for a given group/artifact')
+ optional.add_argument('-h', '--help', action='help', default=argparse.SUPPRESS, help='show this help message and exit')
+
args = parser.parse_args()
if (args.build_type == BuildType.management):
raise ValueError('{} is not currently supported.'.format(BuildType.management.name))
@@ -254,11 +270,17 @@ def main():
if (args.prep_source_testing):
file_changed = prep_version_file_for_source_testing(args.build_type)
elif (args.increment_version):
- increment_version_for_artifact(args.build_type, args.artifact_id)
+ if not args.artifact_id or not args.group_id:
+ raise ValueError('increment-version requires both the artifact-id and group-id arguments. artifact-id={}, group-id={}'.format(args.artifact_id, args.group_id))
+ increment_library_version(args.build_type, args.artifact_id, args.group_id)
elif (args.verify_version):
- verify_current_version_of_artifact(args.build_type, args.artifact_id)
+ if not args.artifact_id or not args.group_id:
+ raise ValueError('verify-version requires both the artifact-id and group-id arguments. artifact-id={}, group-id={}'.format(args.artifact_id, args.group_id))
+ verify_current_version_of_artifact(args.build_type, args.artifact_id, args.group_id)
else:
- update_versions_file_for_nightly_devops(args.update_type, args.build_type, args.build_qualifier, args.artifact_id)
+ if not args.artifact_id or not args.group_id or not args.build_qualifier:
+ raise ValueError('update-version requires the artifact-id, group-id and build-qualifier arguments. artifact-id={}, group-id={}, build-qualifier={}'.format(args.artifact_id, args.group_id, args.build_qualifier))
+ update_versions_file_for_nightly_devops(args.build_type, args.build_qualifier, args.artifact_id, args.group_id)
elapsed_time = time.time() - start_time
print('elapsed_time={}'.format(elapsed_time))
print('Total time for replacement: {}'.format(str(timedelta(seconds=elapsed_time))))
diff --git a/eng/versioning/version_client.txt b/eng/versioning/version_client.txt
index 17d840884e1a3..272ab4667fe80 100644
--- a/eng/versioning/version_client.txt
+++ b/eng/versioning/version_client.txt
@@ -30,7 +30,7 @@ com.azure:azure-storage-file-share;12.1.0;12.2.0-beta.1
com.azure:azure-storage-file-datalake;12.0.0-beta.9;12.0.0-beta.10
com.azure:azure-storage-queue;12.2.0;12.3.0-beta.1
-# Unreleased dependencies: Copy the entry from above, prepent "unreleased_" and remove the current
+# Unreleased dependencies: Copy the entry from above, prepend "unreleased_" and remove the current
# version. Unreleased dependencies are only valid for dependency versions
# Format;
# unreleased_:;dependency-version
diff --git a/sdk/appconfiguration/ci.yml b/sdk/appconfiguration/ci.yml
index a4d077db4d41b..ea5557636a1e1 100644
--- a/sdk/appconfiguration/ci.yml
+++ b/sdk/appconfiguration/ci.yml
@@ -40,7 +40,9 @@ stages:
- template: ../../eng/pipelines/templates/stages/archetype-sdk-client.yml
parameters:
ServiceDirectory: appconfiguration
+ SDKType: client
Artifacts:
- name: azure-data-appconfiguration
+ groupId: com.azure
safeName: azuredataappconfiguration
stagingProfileId: 88192f04117501
diff --git a/sdk/applicationinsights/ci.yml b/sdk/applicationinsights/ci.yml
index 736b0b1ef46b3..8a0dffbd8210e 100644
--- a/sdk/applicationinsights/ci.yml
+++ b/sdk/applicationinsights/ci.yml
@@ -40,7 +40,9 @@ stages:
- template: ../../eng/pipelines/templates/stages/archetype-sdk-client.yml
parameters:
ServiceDirectory: applicationinsights
+ SDKType: data
Artifacts:
- name: azure-applicationinsights-query
+ groupId: com.microsoft.azure
safeName: azureapplicationinsightsquery
stagingProfileId: 534d15ee3800f4
diff --git a/sdk/authorization/ci.yml b/sdk/authorization/ci.yml
index c0ba525cfb07e..90d76eee2d7a3 100644
--- a/sdk/authorization/ci.yml
+++ b/sdk/authorization/ci.yml
@@ -40,7 +40,9 @@ stages:
- template: ../../eng/pipelines/templates/stages/archetype-sdk-client.yml
parameters:
ServiceDirectory: authorization
+ SDKType: data
Artifacts:
- name: azure-authentication-msi-token-provider
+ groupId: com.microsoft.azure.msi_auth_token_provider
safeName: azureauthenticationmsitokenprovider
stagingProfileId: 534d15ee3800f4
diff --git a/sdk/batch/ci.yml b/sdk/batch/ci.yml
index 313cfa169827a..4bd9c8f1665fe 100644
--- a/sdk/batch/ci.yml
+++ b/sdk/batch/ci.yml
@@ -36,7 +36,9 @@ stages:
- template: ../../eng/pipelines/templates/stages/archetype-sdk-client.yml
parameters:
ServiceDirectory: batch
+ SDKType: data
Artifacts:
- name: azure-batch
+ groupId: com.microsoft.azure
safeName: azurebatch
stagingProfileId: 534d15ee3800f4
diff --git a/sdk/cognitiveservices/ci.yml b/sdk/cognitiveservices/ci.yml
index b62d0390fe157..b2bc7cd869b58 100644
--- a/sdk/cognitiveservices/ci.yml
+++ b/sdk/cognitiveservices/ci.yml
@@ -40,58 +40,77 @@ stages:
- template: ../../eng/pipelines/templates/stages/archetype-sdk-client.yml
parameters:
ServiceDirectory: cognitiveservices
+ SDKType: data
Artifacts:
- name: azure-cognitiveservices-autosuggest
+ groupId: com.microsoft.azure.cognitiveservices
safeName: azurecognitiveservicesautosuggest
stagingProfileId: 534d15ee3800f4
- name: azure-cognitiveservices-computervision
+ groupId: com.microsoft.azure.cognitiveservices
safeName: azurecognitiveservicescomputervision
stagingProfileId: 534d15ee3800f4
- name: azure-cognitiveservices-contentmoderator
+ groupId: com.microsoft.azure.cognitiveservices
safeName: azurecognitiveservicescontentmoderator
stagingProfileId: 534d15ee3800f4
- name: azure-cognitiveservices-customimagesearch
+ groupId: com.microsoft.azure.cognitiveservices
safeName: azurecognitiveservicescustomimagesearch
stagingProfileId: 534d15ee3800f4
- name: azure-cognitiveservices-customsearch
+ groupId: com.microsoft.azure.cognitiveservices
safeName: azurecognitiveservicescustomsearch
stagingProfileId: 534d15ee3800f4
- name: azure-cognitiveservices-customvision-prediction
+ groupId: com.microsoft.azure.cognitiveservices
safeName: azurecognitiveservicescustomvisionprediction
stagingProfileId: 534d15ee3800f4
- name: azure-cognitiveservices-customvision-training
+ groupId: com.microsoft.azure.cognitiveservices
safeName: azurecognitiveservicescustomvisiontraining
stagingProfileId: 534d15ee3800f4
- name: azure-cognitiveservices-entitysearch
+ groupId: com.microsoft.azure.cognitiveservices
safeName: azurecognitiveservicesentitysearch
stagingProfileId: 534d15ee3800f4
- name: azure-cognitiveservices-faceapi
+ groupId: com.microsoft.azure.cognitiveservices
safeName: azurecognitiveservicesfaceapi
stagingProfileId: 534d15ee3800f4
- name: azure-cognitiveservices-imagesearch
+ groupId: com.microsoft.azure.cognitiveservices
safeName: azurecognitiveservicesimagesearch
stagingProfileId: 534d15ee3800f4
- name: azure-cognitiveservices-luis-authoring
+ groupId: com.microsoft.azure.cognitiveservices
safeName: azurecognitiveservicesluisauthoring
stagingProfileId: 534d15ee3800f4
- name: azure-cognitiveservices-luis-runtime
+ groupId: com.microsoft.azure.cognitiveservices
safeName: azurecognitiveservicesluisruntime
stagingProfileId: 534d15ee3800f4
- name: azure-cognitiveservices-newssearch
+ groupId: com.microsoft.azure.cognitiveservices
safeName: azurecognitiveservicesnewssearch
stagingProfileId: 534d15ee3800f4
- name: azure-cognitiveservices-spellcheck
+ groupId: com.microsoft.azure.cognitiveservices
safeName: azurecognitiveservicesspellcheck
stagingProfileId: 534d15ee3800f4
- name: azure-cognitiveservices-textanalytics
+ groupId: com.microsoft.azure.cognitiveservices
safeName: azurecognitiveservicestextanalytics
stagingProfileId: 534d15ee3800f4
- name: azure-cognitiveservices-videosearch
+ groupId: com.microsoft.azure.cognitiveservices
safeName: azurecognitiveservicesvideosearch
stagingProfileId: 534d15ee3800f4
- name: azure-cognitiveservices-visualsearch
+ groupId: com.microsoft.azure.cognitiveservices
safeName: azurecognitiveservicesvisualsearch
stagingProfileId: 534d15ee3800f4
- name: azure-cognitiveservices-websearch
+ groupId: com.microsoft.azure.cognitiveservices
safeName: azurecognitiveserviceswebsearch
stagingProfileId: 534d15ee3800f4
diff --git a/sdk/core/ci.yml b/sdk/core/ci.yml
index 66b7ada78550f..3566af1fde018 100644
--- a/sdk/core/ci.yml
+++ b/sdk/core/ci.yml
@@ -38,22 +38,29 @@ stages:
- template: ../../eng/pipelines/templates/stages/archetype-sdk-client.yml
parameters:
ServiceDirectory: core
+ SDKType: client
Artifacts:
- name: azure-core
+ groupId: com.azure
safeName: azurecore
stagingProfileId: 88192f04117501
- name: azure-core-amqp
+ groupId: com.azure
safeName: azurecoreamqp
stagingProfileId: 88192f04117501
- name: azure-core-http-netty
+ groupId: com.azure
safeName: azurecorehttpnetty
stagingProfileId: 88192f04117501
- name: azure-core-http-okhttp
+ groupId: com.azure
safeName: azurecorehttpokhttp
stagingProfileId: 88192f04117501
- name: azure-core-test
+ groupId: com.azure
safeName: azurecoretest
stagingProfileId: 88192f04117501
- name: azure-core-tracing-opentelemetry
+ groupId: com.azure
safeName: azurecoretracingopentelemetry
stagingProfileId: 88192f04117501
diff --git a/sdk/cosmos/ci.yml b/sdk/cosmos/ci.yml
index 5cb77eeefbecd..472c8778e61ce 100644
--- a/sdk/cosmos/ci.yml
+++ b/sdk/cosmos/ci.yml
@@ -40,7 +40,9 @@ stages:
- template: ../../eng/pipelines/templates/stages/cosmos-sdk-client.yml #NOTE: Non-standard template.
parameters:
ServiceDirectory: cosmos
+ SDKType: data
Artifacts:
- name: azure-cosmos
+ groupId: com.microsoft.azure
safeName: azurecosmos
stagingProfileId: 534d15ee3800f4
diff --git a/sdk/eventgrid/ci.yml b/sdk/eventgrid/ci.yml
index daf09b0fc6099..53e7f648999e9 100644
--- a/sdk/eventgrid/ci.yml
+++ b/sdk/eventgrid/ci.yml
@@ -40,7 +40,9 @@ stages:
- template: ../../eng/pipelines/templates/stages/archetype-sdk-client.yml
parameters:
ServiceDirectory: eventgrid
+ SDKType: data
Artifacts:
- name: azure-eventgrid
+ groupId: com.microsoft.azure
safeName: azureeventgrid
stagingProfileId: 534d15ee3800f4
diff --git a/sdk/eventhubs/ci.data.yml b/sdk/eventhubs/ci.data.yml
index 0a7b2fc337581..8de99aecd6ce4 100644
--- a/sdk/eventhubs/ci.data.yml
+++ b/sdk/eventhubs/ci.data.yml
@@ -43,13 +43,17 @@ stages:
- template: ../../eng/pipelines/templates/stages/archetype-sdk-client.yml
parameters:
ServiceDirectory: eventhubs
+ SDKType: data
Artifacts:
- name: azure-eventhubs
+ groupId: com.microsoft.azure
safeName: azureeventhubs
stagingProfileId: 534d15ee3800f4
- name: azure-eventhubs-eph
+ groupId: com.microsoft.azure
safeName: azureeventhubseph
stagingProfileId: 534d15ee3800f4
- name: azure-eventhubs-extensions
+ groupId: com.microsoft.azure
safeName: azureeventhubsextensions
stagingProfileId: 534d15ee3800f4
diff --git a/sdk/eventhubs/ci.yml b/sdk/eventhubs/ci.yml
index a4800555636f0..96ab76e54e974 100644
--- a/sdk/eventhubs/ci.yml
+++ b/sdk/eventhubs/ci.yml
@@ -42,10 +42,13 @@ stages:
- template: ../../eng/pipelines/templates/stages/archetype-sdk-client.yml
parameters:
ServiceDirectory: eventhubs
+ SDKType: client
Artifacts:
- name: azure-messaging-eventhubs
+ groupId: com.azure
safeName: azuremessagingeventhubs
stagingProfileId: 88192f04117501
- name: azure-messaging-eventhubs-checkpointstore-blob
+ groupId: com.azure
safeName: azuremessagingeventhubscheckpointstoreblob
stagingProfileId: 88192f04117501
diff --git a/sdk/identity/ci.yml b/sdk/identity/ci.yml
index 816acabd089c9..4f1d00f558cc6 100644
--- a/sdk/identity/ci.yml
+++ b/sdk/identity/ci.yml
@@ -36,7 +36,9 @@ stages:
- template: ../../eng/pipelines/templates/stages/archetype-sdk-client.yml
parameters:
ServiceDirectory: identity
+ SDKType: client
Artifacts:
- name: azure-identity
+ groupId: com.azure
safeName: azureidentity
stagingProfileId: 88192f04117501
diff --git a/sdk/keyvault/ci.data.yml b/sdk/keyvault/ci.data.yml
index 6f362c162f197..2b0202bfa9d82 100644
--- a/sdk/keyvault/ci.data.yml
+++ b/sdk/keyvault/ci.data.yml
@@ -43,19 +43,25 @@ stages:
- template: ../../eng/pipelines/templates/stages/archetype-sdk-client.yml
parameters:
ServiceDirectory: keyvault
+ SDKType: data
Artifacts:
- name: azure-keyvault
+ groupId: com.microsoft.azure
safeName: azurekeyvault
stagingProfileId: 534d15ee3800f4
- name: azure-keyvault-core
+ groupId: com.microsoft.azure
safeName: azurekeyvaultcore
stagingProfileId: 534d15ee3800f4
- name: azure-keyvault-cryptography
+ groupId: com.microsoft.azure
safeName: azurekeyvaultcryptography
stagingProfileId: 534d15ee3800f4
- name: azure-keyvault-extensions
+ groupId: com.microsoft.azure
safeName: azurekeyvaultextensions
stagingProfileId: 534d15ee3800f4
- name: azure-keyvault-webkey
+ groupId: com.microsoft.azure
safeName: azurekeyvaultwebkey
stagingProfileId: 534d15ee3800f4
\ No newline at end of file
diff --git a/sdk/keyvault/ci.yml b/sdk/keyvault/ci.yml
index 3de9a98ccdc89..7ab9cfb8f385e 100644
--- a/sdk/keyvault/ci.yml
+++ b/sdk/keyvault/ci.yml
@@ -42,13 +42,17 @@ stages:
- template: ../../eng/pipelines/templates/stages/archetype-sdk-client.yml
parameters:
ServiceDirectory: keyvault
+ SDKType: client
Artifacts:
- name: azure-security-keyvault-certificates
+ groupId: com.azure
safeName: azuresecuritykeyvaultcertificates
stagingProfileId: 88192f04117501
- name: azure-security-keyvault-keys
+ groupId: com.azure
safeName: azuresecuritykeyvaultkeys
stagingProfileId: 88192f04117501
- name: azure-security-keyvault-secrets
+ groupId: com.azure
safeName: azuresecuritykeyvaultsecrets
stagingProfileId: 88192f04117501
diff --git a/sdk/loganalytics/ci.yml b/sdk/loganalytics/ci.yml
index 7dd8f5f061cf9..5313570f6695b 100644
--- a/sdk/loganalytics/ci.yml
+++ b/sdk/loganalytics/ci.yml
@@ -40,7 +40,9 @@ stages:
- template: ../../eng/pipelines/templates/stages/archetype-sdk-client.yml
parameters:
ServiceDirectory: loganalytics
+ SDKType: data
Artifacts:
- name: azure-loganalytics
+ groupId: com.microsoft.azure
safeName: azureloganalytics
stagingProfileId: 534d15ee3800f4
diff --git a/sdk/mediaservices/ci.yml b/sdk/mediaservices/ci.yml
index 8dd213a9be2bc..807f31ca0e955 100644
--- a/sdk/mediaservices/ci.yml
+++ b/sdk/mediaservices/ci.yml
@@ -40,7 +40,9 @@ stages:
- template: ../../eng/pipelines/templates/stages/archetype-sdk-client.yml
parameters:
ServiceDirectory: mediaservices
+ SDKType: data
Artifacts:
- name: azure-media
+ groupId: com.microsoft.azure
safeName: azuremedia
stagingProfileId: 534d15ee3800f4
diff --git a/sdk/search/ci.yml b/sdk/search/ci.yml
index dce840bdca84f..1f7d10718fc9b 100644
--- a/sdk/search/ci.yml
+++ b/sdk/search/ci.yml
@@ -40,6 +40,8 @@ stages:
- template: ../../eng/pipelines/templates/stages/archetype-sdk-client.yml
parameters:
ServiceDirectory: search
+ SDKType: client
Artifacts:
- name: azure-search
+ groupId: com.azure
safeName: azuresearch
diff --git a/sdk/servicebus/ci.yml b/sdk/servicebus/ci.yml
index a42cb6fada802..dacfba45bea02 100644
--- a/sdk/servicebus/ci.yml
+++ b/sdk/servicebus/ci.yml
@@ -40,7 +40,9 @@ stages:
- template: ../../eng/pipelines/templates/stages/archetype-sdk-client.yml
parameters:
ServiceDirectory: servicebus
+ SDKType: data
Artifacts:
- name: azure-servicebus
+ groupId: com.microsoft.azure
safeName: azureservicebus
stagingProfileId: 534d15ee3800f4
diff --git a/sdk/spring/ci.yml b/sdk/spring/ci.yml
index 4ab0072f0ccc2..afa43ad4a4ab0 100644
--- a/sdk/spring/ci.yml
+++ b/sdk/spring/ci.yml
@@ -36,6 +36,7 @@ stages:
- template: ../../eng/pipelines/templates/stages/archetype-sdk-client.yml
parameters:
ServiceDirectory: spring
+ SDKType: client
Artifacts:
- name: azure-spring-something
safeName: azurespringsomething
diff --git a/sdk/storage/ci.yml b/sdk/storage/ci.yml
index e94b10a8ddb1c..2e2f3f2f38e07 100644
--- a/sdk/storage/ci.yml
+++ b/sdk/storage/ci.yml
@@ -40,25 +40,33 @@ stages:
- template: ../../eng/pipelines/templates/stages/archetype-sdk-client.yml
parameters:
ServiceDirectory: storage
+ SDKType: client
Artifacts:
- name: azure-storage-common
+ groupId: com.azure
safeName: azurestoragecommon
stagingProfileId: 88192f04117501
- name: azure-storage-blob
+ groupId: com.azure
safeName: azurestorageblob
stagingProfileId: 88192f04117501
- name: azure-storage-blob-batch
+ groupId: com.azure
safeName: azurestorageblobbatch
stagingProfileId: 88192f04117501
- name: azure-storage-blob-cryptography
+ groupId: com.azure
safeName: azurestorageblobcryptography
stagingProfileId: 88192f04117501
- name: azure-storage-file-share
+ groupId: com.azure
safeName: azurestoragefileshare
stagingProfileId: 88192f04117501
- name: azure-storage-file-datalake
+ groupId: com.azure
safeName: azurestoragefiledatalake
stagingProfileId: 88192f04117501
- name: azure-storage-queue
+ groupId: com.azure
safeName: azurestoragequeue
stagingProfileId: 88192f04117501
diff --git a/sdk/template/ci.yml b/sdk/template/ci.yml
index 266c88b4cf1ef..ef76fa94a6015 100644
--- a/sdk/template/ci.yml
+++ b/sdk/template/ci.yml
@@ -36,7 +36,9 @@ stages:
- template: ../../eng/pipelines/templates/stages/archetype-sdk-client.yml
parameters:
ServiceDirectory: template
+ SDKType: client
Artifacts:
- name: azure-sdk-template
+ groupId: com.azure
safeName: azuresdktemplate
- stagingProfileId: 88192f04117501
+ stagingProfileId: 88192f04117501
\ No newline at end of file
diff --git a/sdk/textanalytics/ci.yml b/sdk/textanalytics/ci.yml
index 1b03e9d2ad107..0dd55ab3cbd09 100644
--- a/sdk/textanalytics/ci.yml
+++ b/sdk/textanalytics/ci.yml
@@ -36,7 +36,9 @@ stages:
- template: ../../eng/pipelines/templates/stages/archetype-sdk-client.yml
parameters:
ServiceDirectory: textanalytics
+ SDKType: client
Artifacts:
- name: azure-ai-textanalytics
+ groupId: com.azure
safeName: azureaitextanalytics
stagingProfileId: 88192f04117501