azure-sdk-for-cpp/eng/scripts/Update-PkgVersion.ps1
Daniel Jurek f15c823e79
Automate publishing to vcpkg (#1283)
* Disable dependency on azure-core until azure-core releases to vcpkg.

* Remove release artifact creation script and pipeline step

* Copy items from root cmake generate outputs (no need to do individual project preparation)

* Space

* Add VcpkgPortName (package port names may change in the future to include non v1 version numbers like azure-template-cpp-v2)

* Destination should be artifact name, not vcpkg port name

* Disable PR steps

* SHA512 1 -> SHA512 %SHA512%

* New release procedure

* Unblock publishing process

* Increment azure-template version

* Update branch strategy, uncomment final release of template

* Increment version to test release

* Fix remote branch checkout logic

* Increment version

* Exit successfully

* Increment version

* Increment Version

* Version Increment

* Add a difference in the output file to validate multiple runs against a target PR branch

* Enable existing PR branches in create-pull-request.yml

* Increment version

* Fix archetype-cpp-release.yml syntax

* Skip checkout instead

* Increment version

* Fix automated version incrementing

* Increment version

* Update CHANGELOG.md

* Update CHANGELOG.md date

* Revert CONTROL file

* Remove Build-Depends

* Increment version

* Output commands

* Check out branch in either branch scenario

* Increment version

* Fetch the .tar.gz file using convention, the REST API does not give the location of the .tar.gz

* Increment Version

* ToLower

* Increment

* Increment version

* Version updater should not append a new line to the end of the file contents (existing new line at the end of the file will remain, if present)

* Add azure-template2 to validate base case of shipping different packages instead of file replacement validation from previous runs

* Remove extra backtick

* Add template2 to root CMakeLists.txt

* Review feedback: Support main scenario with packages coming from different location (no new file conflicts)

* Remove file blocking link check step. This is ok because the whole azure-template2 folder will be removed after this verification is complete

* Version increment

* Make template2 install in different locations

* Increment version

* Remove azure-template2 that was used for validating publishing multiple packages

* Remove template2 from ci.yml

* Use "SHA512 1" syntax as proposed by vcpkg documentation and regex replacement

* Review feedback

* Increment version

* Quotes

* Review feedback and re-add New-ReleaseAsset.ps1
2021-01-13 14:35:18 -08:00

100 lines
3.1 KiB
PowerShell

<#
.SYNOPSIS
Bumps up package versions after release
.PARAMETER RepoRoot
The root of the repo (defaults to ${PSScriptRoot}/..)
.PARAMETER ServiceDirectory
The service directory under <repo-root>/sdk/ used to find version.hpp
.PARAMETER PackageName
The package name under <repo-root>/sdk/<service-directory> used to find
version.hpp
.PARAMETER NewVersionString
New version string to use. Must follow SemVer conventions.
.DESCRIPTION
This script bumps up package versions following conventions defined at https://github.com/Azure/azure-sdk/blob/master/docs/policies/releases.md#incrementing-after-release-cpp
#>
[CmdletBinding()]
Param (
[ValidateNotNullOrEmpty()]
[string] $RepoRoot = "${PSScriptRoot}/..",
[Parameter(Mandatory=$True)]
[string] $ServiceDirectory,
[Parameter(Mandatory=$True)]
[string] $PackageName,
[string] $NewVersionString
)
. ${RepoRoot}\common\scripts\SemVer.ps1
. ${PSScriptRoot}\SdkVersion-Common.ps1
# Updated Version in version file and changelog using computed or set NewVersionString
function Update-Version(
[AzureEngSemanticVersion]$SemVer,
$VersionHppLocation,
$Unreleased=$True,
$ReplaceLatestEntryTitle=$False)
{
Write-Verbose "New Version: $SemVer"
if ($SemVer.HasValidPrereleaseLabel() -ne $true){
Write-Error "Invalid prerelease label: $SemVer"
exit 1
}
Write-Verbose "Saving version.hpp file..."
$versionHppContent = Get-Content $VersionHppLocation -Raw
if ($SemVer.IsPrerelease) {
$newContent = $versionHppContent -replace $VersionRegex, "`${1}$($SemVer.Major)`${2}$($SemVer.Minor)`${3}$($SemVer.Patch)`${4}`"$($SemVer.PrereleaseLabel).$($SemVer.PrereleaseNumber)`""
} else {
$newContent = $versionHppContent -replace $VersionRegex, "`${1}$($SemVer.Major)`${2}$($SemVer.Minor)`${3}$($SemVer.Patch)`${4}`"`""
}
$newContent | Set-Content $VersionHppLocation -NoNewline
# Set Version in ChangeLog file
& "${RepoRoot}/eng/common/scripts/Update-ChangeLog.ps1" `
-Version $SemVer.ToString() `
-ServiceDirectory $ServiceDirectory `
-PackageName $PackageName `
-Unreleased $Unreleased `
-ReplaceLatestEntryTitle $ReplaceLatestEntryTitle
}
$versionHppLocation = Get-VersionHppLocaiton `
-ServiceDirectory $ServiceDirectory `
-PackageName $PackageName
Write-Verbose "VERSION FILE: $versionHppLocation"
# Obtain Current Package Version
if ([System.String]::IsNullOrEmpty($NewVersionString))
{
$PackageVersion = & $PSScriptRoot/Get-PkgVersion.ps1 `
-ServiceDirectory $ServiceDirectory `
-PackageName $PackageName
$SemVer = [AzureEngSemanticVersion]::new($PackageVersion)
Write-Verbose "Current Version: ${PackageVersion}"
$SemVer.IncrementAndSetToPrerelease()
Update-Version -SemVer $SemVer -VersionHppLocation $versionHppLocation
}
else
{
# Use specified VersionString
$SemVer = [AzureEngSemanticVersion]::new($NewVersionString)
Update-Version `
-SemVer $SemVer `
-VersionHppLocation $versionHppLocation `
-Unreleased $False `
-ReplaceLatestEntryTitle $True
}