diff --git a/eng/pipelines/templates/stages/archetype-python-release.yml b/eng/pipelines/templates/stages/archetype-python-release.yml index 9d0aa70c9809..95730aed7bac 100644 --- a/eng/pipelines/templates/stages/archetype-python-release.yml +++ b/eng/pipelines/templates/stages/archetype-python-release.yml @@ -2,6 +2,7 @@ parameters: Artifacts: [] TestPipeline: false ArtifactName: 'not-specified' + ServiceDirectory: 'not-specified' DependsOn: Build DocArtifact: 'documentation' DevFeedName: 'public/azure-sdk-for-python' @@ -227,7 +228,7 @@ stages: displayName: Increment package version inputs: scriptPath: 'eng/versioning/version_increment.py' - arguments: '--package-name ${{ artifact.name }}' + arguments: '--package-name ${{ artifact.name }} --service ${{ parameters.ServiceDirectory }}' - template: /eng/common/pipelines/templates/steps/create-pull-request.yml parameters: RepoName: azure-sdk-for-python diff --git a/eng/scripts/Language-Settings.ps1 b/eng/scripts/Language-Settings.ps1 index 1b328012b475..4f9ffdd1d975 100644 --- a/eng/scripts/Language-Settings.ps1 +++ b/eng/scripts/Language-Settings.ps1 @@ -23,7 +23,8 @@ function Get-python-PackageInfoFromRepo ($pkgPath, $serviceDirectory, $pkgName) } # Returns the pypi publish status of a package id and version. -function IsPythonPackageVersionPublished($pkgId, $pkgVersion) { +function IsPythonPackageVersionPublished($pkgId, $pkgVersion) +{ try { $existingVersion = (Invoke-RestMethod -MaximumRetryCount 3 -RetryIntervalSec 10 -Method "Get" -uri "https://pypi.org/pypi/$pkgId/$pkgVersion/json").info.version @@ -48,7 +49,8 @@ function IsPythonPackageVersionPublished($pkgId, $pkgVersion) { } # Parse out package publishing information given a python sdist of ZIP format. -function Get-python-PackageInfoFromPackageFile ($pkg, $workingDirectory) { +function Get-python-PackageInfoFromPackageFile ($pkg, $workingDirectory) +{ $pkg.Basename -match $SDIST_PACKAGE_REGEX | Out-Null $pkgId = $matches["package"] @@ -109,7 +111,8 @@ function Publish-python-GithubIODocs ($DocLocation, $PublicArtifactLocation) } } -function Get-python-GithubIoDocIndex() { +function Get-python-GithubIoDocIndex() +{ # Update the main.js and docfx.json language content UpdateDocIndexFiles -appTitleLang Python # Fetch out all package metadata from csv file. @@ -125,7 +128,8 @@ function Get-python-GithubIoDocIndex() { # Updates a python CI configuration json. # For "latest", the version attribute is cleared, as default behavior is to pull latest "non-preview". # For "preview", we update to >= the target releasing package version. -function Update-python-CIConfig($pkgs, $ciRepo, $locationInDocRepo, $monikerId=$null){ +function Update-python-CIConfig($pkgs, $ciRepo, $locationInDocRepo, $monikerId=$null) +{ $pkgJsonLoc = (Join-Path -Path $ciRepo -ChildPath $locationInDocRepo) if (-not (Test-Path $pkgJsonLoc)) { @@ -205,3 +209,13 @@ function Find-python-Artifacts-For-Apireview($artifactDir, $artifactName) } return $packages } + +function SetPackageVersion ($PackageName, $Version, $ServiceDirectory, $ReleaseDate, $BuildType=$null, $GroupId=$null) +{ + if($null -eq $ReleaseDate) + { + $ReleaseDate = Get-Date -Format "yyyy-MM-dd" + } + pip install -r "$EngDir/versioning/requirements.txt" -q -I + python "$EngDir/versioning/version_set.py" --package-name $PackageName --new-version $Version --service $ServiceDirectory --release-date $ReleaseDate +} \ No newline at end of file diff --git a/eng/versioning/version_increment.py b/eng/versioning/version_increment.py index 6631b2f840c2..3ac56b45ee4c 100644 --- a/eng/versioning/version_increment.py +++ b/eng/versioning/version_increment.py @@ -37,7 +37,7 @@ def increment_version(old_version): 'Examples: All = "azure-*", Single = "azure-keyvault", Targeted Multiple = "azure-keyvault,azure-mgmt-resource"' ), ) - parser.add_argument('--service', help='name of the service for which to set the dev build id (e.g. keyvault)') + parser.add_argument('--service', required=True, help='name of the service for which to set the dev build id (e.g. keyvault)') args = parser.parse_args() package_name = args.package_name.replace('_', '-') @@ -56,4 +56,4 @@ def increment_version(old_version): set_version_py(target_package[0], new_version) set_dev_classifier(target_package[0], new_version) - update_change_log(target_package[0], new_version, True, False) \ No newline at end of file + update_change_log(target_package[0], new_version, args.service, args.package_name, True, False) \ No newline at end of file diff --git a/eng/versioning/version_set.py b/eng/versioning/version_set.py index c2b381e6f159..0bdfedd58e8b 100644 --- a/eng/versioning/version_set.py +++ b/eng/versioning/version_set.py @@ -9,7 +9,8 @@ parser.add_argument('--package-name', required=True, help='name of package (accetps both formats: azure-service-package and azure_service_pacage)') parser.add_argument('--new-version', required=True, help='new package version') - parser.add_argument('--service', help='name of the service for which to set the dev build id (e.g. keyvault)') + parser.add_argument('--service', required=True, help='name of the service for which to set the dev build id (e.g. keyvault)') + parser.add_argument('--release-date', help='date in the format "yyyy-MM-dd"') parser.add_argument( dest="glob_string", nargs="?", @@ -37,4 +38,4 @@ set_version_py(target_package[0], new_version) set_dev_classifier(target_package[0], new_version) - update_change_log(target_package[0], new_version, False, True) \ No newline at end of file + update_change_log(target_package[0], new_version, args.service, args.package_name, False, True, args.release_date) \ No newline at end of file diff --git a/eng/versioning/version_shared.py b/eng/versioning/version_shared.py index a146e9741f37..79b829d8b818 100644 --- a/eng/versioning/version_shared.py +++ b/eng/versioning/version_shared.py @@ -15,6 +15,7 @@ import logging from packaging.version import parse +from datetime import date from setup_parser import parse_setup root_dir = path.abspath(path.join(path.abspath(__file__), "..", "..", "..")) @@ -130,21 +131,28 @@ def set_dev_classifier(setup_py_location, version): setup_py_file.write(replaced_setup_contents) -def update_change_log(setup_py_location, version, is_unreleased, replace_version): - script = os.path.join(root_dir, "eng", "common", "Update-Change-Log.ps1") +def update_change_log(setup_py_location, version, service, package, is_unreleased, replace_version, release_date=None): + script = os.path.join(root_dir, "eng", "common", "scripts", "Update-ChangeLog.ps1") pkg_root = os.path.abspath(os.path.join(setup_py_location, "..")) + commands = [ "pwsh", script, "--Version", version, - "--ChangeLogPath", - pkg_root, + "--ServiceDirectory", + service, + "--PackageName", + package, "--Unreleased", str(is_unreleased), - "--ReplaceVersion", + "--ReplaceLatestEntry", str(replace_version) ] + if release_date is not None: + commands.append("--ReleaseDate") + commands.append(release_date) + # Run script to update change log run_check_call(commands, pkg_root)