From a3c03392caaa0c7526a90f7721f9591e66f7bb7e Mon Sep 17 00:00:00 2001 From: Travis Plunk Date: Wed, 27 Oct 2021 17:14:50 -0700 Subject: [PATCH] Add a major-minor build info JSON file (#16301) --- tools/metadata.json | 4 +- .../GenericLinuxFiles/PowerShellPackage.ps1 | 2 +- .../releaseBuild/azureDevOps/releaseBuild.yml | 2 +- .../azureDevOps/templates/linux.yml | 4 +- .../templates/release-BuildJson.yml | 47 +++++++++++++++---- .../release-PublishPackageMsftCom.yml | 4 +- .../macOS/PowerShellPackageVsts.ps1 | 3 +- 7 files changed, 49 insertions(+), 17 deletions(-) diff --git a/tools/metadata.json b/tools/metadata.json index 83e6c87fc5..4f133970e1 100644 --- a/tools/metadata.json +++ b/tools/metadata.json @@ -5,6 +5,6 @@ "ReleaseTag": "v7.1.5", "LTSReleaseTag" : ["v7.0.8"], "NextReleaseTag": "v7.2.0-preview.11", - "LTSRelease": false, - "StableRelease": false + "LTSRelease": { "Latest": false, "Package": true }, + "StableRelease": { "Latest": false, "Package": true } } diff --git a/tools/releaseBuild/Images/GenericLinuxFiles/PowerShellPackage.ps1 b/tools/releaseBuild/Images/GenericLinuxFiles/PowerShellPackage.ps1 index a3834fdf87..f96263ea6e 100644 --- a/tools/releaseBuild/Images/GenericLinuxFiles/PowerShellPackage.ps1 +++ b/tools/releaseBuild/Images/GenericLinuxFiles/PowerShellPackage.ps1 @@ -35,7 +35,7 @@ $semVersion = [System.Management.Automation.SemanticVersion] $version $metadata = Get-Content "$location/tools/metadata.json" -Raw | ConvertFrom-Json -$LTS = $metadata.LTSRelease +$LTS = $metadata.LTSRelease.Package Write-Verbose -Verbose -Message "LTS is set to: $LTS" diff --git a/tools/releaseBuild/azureDevOps/releaseBuild.yml b/tools/releaseBuild/azureDevOps/releaseBuild.yml index 53dbe9ac31..4616f734b2 100644 --- a/tools/releaseBuild/azureDevOps/releaseBuild.yml +++ b/tools/releaseBuild/azureDevOps/releaseBuild.yml @@ -217,7 +217,7 @@ stages: - powershell: | $metadata = Get-Content '$(Build.SourcesDirectory)/tools/metadata.json' -Raw | ConvertFrom-Json - $LTS = $metadata.LTSRelease + $LTS = $metadata.LTSRelease.Latest @{ ReleaseVersion = "$(Version)"; LTSRelease = $LTS } | ConvertTo-Json | Out-File "$(Build.StagingDirectory)\release.json" Get-Content "$(Build.StagingDirectory)\release.json" Write-Host "##vso[artifact.upload containerfolder=metadata;artifactname=metadata]$(Build.StagingDirectory)\release.json" diff --git a/tools/releaseBuild/azureDevOps/templates/linux.yml b/tools/releaseBuild/azureDevOps/templates/linux.yml index 30d3ee4912..353f6e2431 100644 --- a/tools/releaseBuild/azureDevOps/templates/linux.yml +++ b/tools/releaseBuild/azureDevOps/templates/linux.yml @@ -103,7 +103,9 @@ jobs: Import-Module "$env:POWERSHELLROOT/tools/packaging" $metadata = Get-Content "$env:POWERSHELLROOT/tools/metadata.json" -Raw | ConvertFrom-Json - $LTS = $metadata.LTSRelease + + # LTSRelease.Package indicates that the release should be packaged as an LTS + $LTS = $metadata.LTSRelease.Package Write-Verbose -Verbose -Message "LTS is set to: $LTS" Invoke-AzDevOpsLinuxPackageCreation -ReleaseTag '$(ReleaseTagVar)' -BuildType '$(build)' diff --git a/tools/releaseBuild/azureDevOps/templates/release-BuildJson.yml b/tools/releaseBuild/azureDevOps/templates/release-BuildJson.yml index 5d51601625..793b1cfd1d 100644 --- a/tools/releaseBuild/azureDevOps/templates/release-BuildJson.yml +++ b/tools/releaseBuild/azureDevOps/templates/release-BuildJson.yml @@ -18,8 +18,8 @@ steps: $dateTime = [datetime]::new($dateTime.Ticks - ($dateTime.Ticks % [timespan]::TicksPerSecond), $dateTime.Kind) $metadata = Get-Content ./tools/metadata.json | ConvertFrom-Json - $stableRelease = $metadata.StableRelease - $ltsRelease = $metadata.LTSRelease + $stableRelease = $metadata.StableRelease.Latest + $ltsRelease = $metadata.LTSRelease.Latest $buildInfo = Get-Content $jsonFile | ConvertFrom-Json $buildInfo.ReleaseDate = $dateTime @@ -35,17 +35,27 @@ steps: Write-Host "sending " + $vstsCommandString Write-Host "##$vstsCommandString" - ## Create 'lts.json' if it's the latest stable and also a LTS release. $vstsCommandCopyLTSBuildInfo = "vso[task.setvariable variable=CopyLTSBuildInfo]NO" + $vstsCommandCopyVersionBuildInfo = "vso[task.setvariable variable=CopyVersionBuildInfo]NO" - if ($fileName -eq "stable.json" -and $ltsRelease) - { - $ltsFile = "$ENV:PIPELINE_WORKSPACE/lts.json" - Copy-Item -Path $targetFile -Destination $ltsFile -Force - $vstsCommandLtsJsonFile = "vso[task.setvariable variable=LtsBuildInfoJsonFile]$ltsFile" - $vstsCommandCopyLTSBuildInfo = "vso[task.setvariable variable=CopyLTSBuildInfo]YES" + if ($fileName -eq "stable.json") { + if ($ltsRelease) { + $ltsFile = "$ENV:PIPELINE_WORKSPACE/lts.json" + Copy-Item -Path $targetFile -Destination $ltsFile -Force + $vstsCommandLtsJsonFile = "vso[task.setvariable variable=LtsBuildInfoJsonFile]$ltsFile" + $vstsCommandCopyLTSBuildInfo = "vso[task.setvariable variable=CopyLTSBuildInfo]YES" + } + + $releaseTag = $buildInfo.ReleaseTag + $version = $releaseTag -replace '^v' + $semVersion = [System.Management.Automation.SemanticVersion] $version + + $versionFile = "$ENV:PIPELINE_WORKSPACE/$($semVersion.Major)-$($semVersion.Minor).json" + Copy-Item -Path $targetFile -Destination $versionFile -Force + $vstsCommandVersionJsonFile = "vso[task.setvariable variable=VersionBuildInfoJsonFile]$versionFile" + $vstsCommandCopyVersionBuildInfo = "vso[task.setvariable variable=CopyVersionBuildInfo]YES" } Write-Host "sending " + $vstsCommandCopyLTSBuildInfo @@ -56,6 +66,15 @@ steps: Write-Host "sending " + $vstsCommandLtsJsonFile Write-Host "##$vstsCommandLtsJsonFile" } + + Write-Host "sending " + $vstsCommandCopyVersionBuildInfo + Write-Host "##$vstsCommandCopyVersionBuildInfo" + + if ($vstsCommandVersionJsonFile) + { + Write-Host "sending " + $vstsCommandVersionJsonFile + Write-Host "##$vstsCommandVersionJsonFile" + } displayName: Download and Capture NuPkgs - task: AzureFileCopy@2 @@ -77,3 +96,13 @@ steps: storage: '$(StorageAccount)' ContainerName: BuildInfo condition: and(succeeded(), eq(variables['CopyLTSBuildInfo'], 'YES')) + +- task: AzureFileCopy@2 + displayName: 'AzureBlob build info ''Major-Minor.json'' Copy when needed' + inputs: + SourcePath: '$(VersionBuildInfoJsonFile)' + azureSubscription: '$(AzureFileCopySubscription)' + Destination: AzureBlob + storage: '$(StorageAccount)' + ContainerName: BuildInfo + condition: and(succeeded(), eq(variables['CopyVersionBuildInfo'], 'YES')) diff --git a/tools/releaseBuild/azureDevOps/templates/release-PublishPackageMsftCom.yml b/tools/releaseBuild/azureDevOps/templates/release-PublishPackageMsftCom.yml index cb5ba23f5b..5257fa2d9a 100644 --- a/tools/releaseBuild/azureDevOps/templates/release-PublishPackageMsftCom.yml +++ b/tools/releaseBuild/azureDevOps/templates/release-PublishPackageMsftCom.yml @@ -25,13 +25,13 @@ steps: - pwsh: | $metadata = Get-Content -Path "$ENV:PIPELINE_WORKSPACE/releasePipeline/metadata/release.json" -Raw | ConvertFrom-Json - Write-Verbose -Verbose "$(ReleaseTag) $(RepoClientCliClientID) $(RepoClientCliSecret) $(AzureVersion) $($metadata.LTSRelease)" + Write-Verbose -Verbose "$(ReleaseTag) $(RepoClientCliClientID) $(RepoClientCliSecret) $(AzureVersion) $($metadata.LTSRelease.Latest)" $params = @{ ReleaseTag = "$(ReleaseTag)" AadClientId = "$(RepoClientCliClientID)" AadClientSecret = "$(RepoClientCliSecret)" BlobFolderName = "$(AzureVersion)" - LTS = $metadata.LTSRelease + LTS = $metadata.LTSRelease.Latest ForProduction = $true } & '$(Pipeline.Workspace)/tools/packages.microsoft.com/releaseLinuxPackages.ps1' @params diff --git a/tools/releaseBuild/macOS/PowerShellPackageVsts.ps1 b/tools/releaseBuild/macOS/PowerShellPackageVsts.ps1 index 92d64b4797..acedbdd338 100644 --- a/tools/releaseBuild/macOS/PowerShellPackageVsts.ps1 +++ b/tools/releaseBuild/macOS/PowerShellPackageVsts.ps1 @@ -65,7 +65,8 @@ if ($Build -or $PSCmdlet.ParameterSetName -eq 'packageSigned') { $semVersion = [System.Management.Automation.SemanticVersion] $version $metadata = Get-Content "$location/tools/metadata.json" -Raw | ConvertFrom-Json - $LTS = $metadata.LTSRelease + + $LTS = $metadata.LTSRelease.Package Write-Verbose -Verbose -Message "LTS is set to: $LTS" }