Skip to content

Commit

Permalink
Allow patching of preview releases (PowerShell#15074)
Browse files Browse the repository at this point in the history
  • Loading branch information
TravisEz13 committed Mar 23, 2021
1 parent b9f378d commit 7acf70e
Show file tree
Hide file tree
Showing 10 changed files with 55 additions and 14 deletions.
40 changes: 38 additions & 2 deletions PowerShell.Common.props
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,44 @@
</Exec>

<PropertyGroup Condition = "'$(ReleaseTag)' != ''">
<!--
DO NOT UPDATE without reviewing with the Microsoft update plan.
7.2.0-preview.1
__a__.__b____.c
a = Version part and is group 1 of the regex
b = the Semantic version prerelease name. This is optional.
c = The semantic version prerelease iteration. This is optional and only allowed of the prerelease name is present.
Our version will become the version part with the prerelease iteration being the revision (the 4th part of the version).
For RCs, we will increment the iteration from 100.
Examples
7.2.0 becomes 7.2.0
7.2.0-preview.1 becomes 7.2.0.1
7.2.0-rc.1 becomes 7.2.0.101
-->

<!-- parse the release tag into the parts we need -->
<RegexReleaseTag>^((\d+).(\d+).(\d+))(-(\w+)(.(\d+))?)?$</RegexReleaseTag>
<ReleaseTagVersionPart>$([System.Text.RegularExpressions.Regex]::Match($(ReleaseTag), $(RegexReleaseTag)).Groups[1].Value)</ReleaseTagVersionPart>
<ReleaseTagSemVersionPart>$([System.Text.RegularExpressions.Regex]::Match($(ReleaseTag), $(RegexReleaseTag)).Groups[8].Value)</ReleaseTagSemVersionPart>
<ReleaseTagSemVersionPrereleaseNamePart>$([System.Text.RegularExpressions.Regex]::Match($(ReleaseTag), $(RegexReleaseTag)).Groups[6].Value)</ReleaseTagSemVersionPrereleaseNamePart>
<!-- Increment revision 100 for rc releases -->
<RCIncrementValue>100</RCIncrementValue>
<ReleaseTagSemVersionPart Condition = "'$(ReleaseTagSemVersionPrereleaseNamePart)' == 'rc'">$([MSBuild]::Add($(ReleaseTagSemVersionPart), $(RCIncrementValue)))</ReleaseTagSemVersionPart>
<!-- Create the internal version -->
<PSCoreBuildVersion>$(ReleaseTag)</PSCoreBuildVersion>
<!-- Create the version if we have a pre-release -->
<PSCoreFileVersion Condition = "'$(ReleaseTagSemVersionPart)' != ''">$(ReleaseTagVersionPart).$(ReleaseTagSemVersionPart)</PSCoreFileVersion>
<!-- Create the version if we have a release build -->
<PSCoreFileVersion Condition = "'$(PSCoreFileVersion)' == ''">$(ReleaseTagVersionPart)</PSCoreFileVersion>
</PropertyGroup>

<PropertyGroup>
<RegexGitVersion>^v(.+)-(\d+)-g(.+)</RegexGitVersion>
<PSCoreFileVersion Condition = "'$(PSCoreFileVersion)' == ''">$([System.Text.RegularExpressions.Regex]::Match($(PowerShellVersion), $(RegexGitVersion)).Groups[1].Value)</PSCoreFileVersion>
<PSCoreBuildVersion Condition = "'$(PSCoreBuildVersion)' == ''">$([System.Text.RegularExpressions.Regex]::Match($(PowerShellVersion), $(RegexGitVersion)).Groups[1].Value)</PSCoreBuildVersion>
<PSCoreAdditionalCommits>$([System.Text.RegularExpressions.Regex]::Match($(PowerShellVersion), $(RegexGitVersion)).Groups[2].Value)</PSCoreAdditionalCommits>
<PSCoreCommitSHA>$([System.Text.RegularExpressions.Regex]::Match($(PowerShellVersion), $(RegexGitVersion)).Groups[3].Value)</PSCoreCommitSHA>
Expand All @@ -52,7 +85,7 @@
Here we define explicitly 'Version' to set 'FileVersion' and 'AssemblyVersion' by 'GetAssemblyVersion' target in 'Microsoft.NET.GenerateAssemblyInfo.targets'.
Here we define explicitly 'InformationalVersion' because by default it is defined as 'Version' by 'GetAssemblyVersion' target in 'Microsoft.NET.GenerateAssemblyInfo.targets'.
-->
<Version>$(PSCoreBuildVersion)</Version>
<Version>$(PSCoreFileVersion)</Version>
<InformationalVersion>$(PSCoreFormattedVersion)</InformationalVersion>
<ProductVersion>$(PSCoreFormattedVersion)</ProductVersion>

Expand All @@ -72,8 +105,11 @@
<!-- Output For Debugging
<WriteLinesToFile File="targetfile1.txt"
Lines="ReleaseTag=$(ReleaseTag);
PowerShellVersion=$(PowerShellVersion);
PowerShellVersion = $(PowerShellVersion);
PSCoreBuildVersion = $(PSCoreBuildVersion);
PSCoreFileVersion = $(PSCoreFileVersion);
ReleaseTagVersionPart = $(ReleaseTagVersionPart);
ReleaseTagSemVersionPart = $(ReleaseTagSemVersionPart);
PSCoreAdditionalCommits = $(PSCoreAdditionalCommits);
PSCoreCommitSHA = $(PSCoreCommitSHA);
PSCoreMajorVersion = $(PSCoreMajorVersion);
Expand Down
6 changes: 5 additions & 1 deletion build.psm1
Original file line number Diff line number Diff line change
Expand Up @@ -303,13 +303,17 @@ function Start-PSBuild {

[switch]$CrossGen,

[ValidatePattern("^v\d+\.\d+\.\d+(-\w+(\.\d+)?)?$")]
[ValidatePattern("^v\d+\.\d+\.\d+(-\w+(\.\d{1,2})?)?$")]
[ValidateNotNullOrEmpty()]
[string]$ReleaseTag,
[switch]$Detailed,
[switch]$InteractiveAuth
)

if ($ReleaseTag -and $ReleaseTag -notmatch "^v\d+\.\d+\.\d+(-(preview|rc)(\.\d{1,2})?)?$") {
Write-Warning "Only preview or rc are supported for releasing pre-release version of PowerShell"
}

if ($PSCmdlet.ParameterSetName -eq "Default" -and !$NoPSModuleRestore)
{
$PSModuleRestore = $true
Expand Down
5 changes: 3 additions & 2 deletions tools/ci.psm1
Original file line number Diff line number Diff line change
Expand Up @@ -462,7 +462,8 @@ function Invoke-CIFinish
$previewLabel= "daily{0}" -f $previewLabel
}

$preReleaseVersion = "$previewPrefix-$previewLabel.$env:BUILD_BUILDID"
$prereleaseIteration = (get-date).Day
$preReleaseVersion = "$previewPrefix-$previewLabel.$prereleaseIteration"
# Build clean before backing to remove files from testing
Start-PSBuild -CrossGen -PSModuleRestore -Configuration 'Release' -ReleaseTag $preReleaseVersion -Clean -Runtime $Runtime
}
Expand All @@ -474,7 +475,7 @@ function Invoke-CIFinish
Start-PSBuild -CrossGen -PSModuleRestore -Configuration 'Release' -ReleaseTag $preReleaseVersion -Clean -Runtime $Runtime
}

# Build packages $preReleaseVersion = "$previewPrefix-$previewLabel.$env:BUILD_BUILDID"
# Build packages $preReleaseVersion = "$previewPrefix-$previewLabel.$prereleaseIteration"
$packages = Start-PSPackage -Type msi,nupkg,zip,zip-pdb -ReleaseTag $preReleaseVersion -SkipReleaseChecks -WindowsRuntime $Runtime

$artifacts = New-Object System.Collections.ArrayList
Expand Down
2 changes: 1 addition & 1 deletion tools/packaging/packaging.psm1
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ function Start-PSPackage {
[string]$Version,

[Parameter(ParameterSetName = "ReleaseTag")]
[ValidatePattern("^v\d+\.\d+\.\d+(-\w+(\.\d+)?)?$")]
[ValidatePattern("^v\d+\.\d+\.\d+(-\w+(\.\d{1,2})?)?$")]
[ValidateNotNullOrEmpty()]
[string]$ReleaseTag,

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ param (
# Destination location of the package on docker host
[string] $destination = '/mnt',

[ValidatePattern("^v\d+\.\d+\.\d+(-\w+(\.\d+)?)?$")]
[ValidatePattern("^v\d+\.\d+\.\d+(-\w+(\.\d{1,2})?)?$")]
[ValidateNotNullOrEmpty()]
[string]$ReleaseTag,

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ param (

[switch] $Wait,

[ValidatePattern("^v\d+\.\d+\.\d+(-\w+(\.\d+)?)?$")]
[ValidatePattern("^v\d+\.\d+\.\d+(-\w+(\.\d{1,2})?)?$")]
[ValidateNotNullOrEmpty()]
[string] $ReleaseTag,

Expand Down
4 changes: 2 additions & 2 deletions tools/releaseBuild/azureDevOps/templates/upload.yml
Original file line number Diff line number Diff line change
Expand Up @@ -52,14 +52,14 @@ steps:

- template: upload-final-results.yml
parameters:
artifactPath: $(System.ArtifactsDirectory)\signed
artifactPath: $(System.ArtifactsDirectory)\signedPackages
artifactFilter: PowerShell-${{ parameters.version }}-win-${{ parameters.architecture }}.exe
condition: and(succeeded(), eq('${{ parameters.msi }}', 'yes'))

- task: AzureFileCopy@4
displayName: 'upload signed exe to Azure - ${{ parameters.architecture }}'
inputs:
SourcePath: '$(System.ArtifactsDirectory)\signed\PowerShell-${{ parameters.version }}-win-${{ parameters.architecture }}.exe'
SourcePath: '$(System.ArtifactsDirectory)\signedPackages\PowerShell-${{ parameters.version }}-win-${{ parameters.architecture }}.exe'
azureSubscription: '$(AzureFileCopySubscription)'
Destination: AzureBlob
storage: '$(StorageAccount)'
Expand Down
2 changes: 1 addition & 1 deletion tools/releaseBuild/macOS/PowerShellPackageVsts.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ param (
[Parameter(Mandatory, ParameterSetName = 'packageSigned')]
[Parameter(Mandatory, ParameterSetName = 'IncludeSymbols')]
[Parameter(Mandatory, ParameterSetName = 'Build')]
[ValidatePattern("^v\d+\.\d+\.\d+(-\w+(\.\d+)?)?$")]
[ValidatePattern("^v\d+\.\d+\.\d+(-\w+(\.\d{1,2})?)?$")]
[ValidateNotNullOrEmpty()]
[string]$ReleaseTag,

Expand Down
2 changes: 1 addition & 1 deletion tools/releaseBuild/vstsbuild.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
param(
[Parameter(ParameterSetName='packageSigned')]
[Parameter(ParameterSetName='Build')]
[ValidatePattern("^v\d+\.\d+\.\d+(-\w+(\.\d+)?)?$")]
[ValidatePattern("^v\d+\.\d+\.\d+(-\w+(\.\d{1,2})?)?$")]
[string]$ReleaseTag,

# full paths to files to add to container to run the build
Expand Down
4 changes: 2 additions & 2 deletions tools/releaseTools.psm1
Original file line number Diff line number Diff line change
Expand Up @@ -594,12 +594,12 @@ function Update-PsVersionInCode
{
param(
[Parameter(Mandatory)]
[ValidatePattern("^v\d+\.\d+\.\d+(-\w+(\.\d+)?)?$")]
[ValidatePattern("^v\d+\.\d+\.\d+(-\w+(\.\d{1,2})?)?$")]
[String]
$NewReleaseTag,

[Parameter(Mandatory)]
[ValidatePattern("^v\d+\.\d+\.\d+(-\w+(\.\d+)?)?$")]
[ValidatePattern("^v\d+\.\d+\.\d+(-\w+(\.\d{1,2})?)?$")]
[String]
$NextReleaseTag,

Expand Down

0 comments on commit 7acf70e

Please sign in to comment.