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