PowerShell/tools/releaseBuild/azureDevOps/templates/release-BuildJson.yml
2021-10-27 17:14:50 -07:00

109 lines
4 KiB
YAML

steps:
- task: DownloadPipelineArtifact@2
inputs:
source: specific
project: PowerShellCore
pipeline: '696'
preferTriggeringPipeline: true
runVersion: latestFromBranch
runBranch: '$(Build.SourceBranch)'
artifact: BuildInfoJson
path: '$(Pipeline.Workspace)/releasePipeline/BuildInfoJson'
- pwsh: |
$jsonFile = Get-Item "$ENV:PIPELINE_WORKSPACE/releasePipeline/BuildInfoJson/*.json"
$fileName = Split-Path $jsonFile -Leaf
$dateTime = [datetime]::UtcNow
$dateTime = [datetime]::new($dateTime.Ticks - ($dateTime.Ticks % [timespan]::TicksPerSecond), $dateTime.Kind)
$metadata = Get-Content ./tools/metadata.json | ConvertFrom-Json
$stableRelease = $metadata.StableRelease.Latest
$ltsRelease = $metadata.LTSRelease.Latest
$buildInfo = Get-Content $jsonFile | ConvertFrom-Json
$buildInfo.ReleaseDate = $dateTime
$targetFile = "$ENV:PIPELINE_WORKSPACE/$fileName"
ConvertTo-Json -InputObject $buildInfo | Out-File $targetFile -Encoding ascii
if ($stableRelease) {
$vstsCommandCopyLTSBuildInfo = "vso[task.setvariable variable=CopyStableBuildInfo]YES"
}
$vstsCommandString = "vso[task.setvariable variable=BuildInfoJsonFile]$targetFile"
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") {
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
Write-Host "##$vstsCommandCopyLTSBuildInfo"
if ($vstsCommandLtsJsonFile)
{
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
displayName: 'AzureBlob build info JSON file Copy'
inputs:
SourcePath: '$(BuildInfoJsonFile)'
azureSubscription: '$(AzureFileCopySubscription)'
Destination: AzureBlob
storage: '$(StorageAccount)'
ContainerName: BuildInfo
condition: and(succeeded(), eq(variables['CopyStableBuildInfo'], 'YES'))
- task: AzureFileCopy@2
displayName: 'AzureBlob build info ''lts.json'' Copy when needed'
inputs:
SourcePath: '$(LtsBuildInfoJsonFile)'
azureSubscription: '$(AzureFileCopySubscription)'
Destination: AzureBlob
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'))