eng/scripts/Set-CliVersionInBuild.ps1 (30 lines of code) (raw):
<#
.SYNOPSIS
Set-CliVersionInBuild sets the CLI version defined in version.txt.
.PARAMETER BuildReason
The build reason supplied from the CI provider. In Azure Pipelines, this would be "Build.Reason".
.PARAMETER BuildId
A unique build ID supplied from the CI provider. In Azure Pipelines, this would be "Build.BuildId".
#>
param(
[string]$BuildReason,
[string]$BuildId
)
$prereleaseCategory = ""
if ($BuildReason -eq "Manual") {
Write-Host "Skipping prerelease tagging for release build."
exit 0
}
elseif ($BuildReason -eq "PullRequest") {
$prereleaseCategory = "pr"
}
else {
# This intentionally covers all scheduled/CI trigger definitions: IndividualCI, BatchedCI, Schedule.
# For all other types such as ResourceTrigger, we default back to 'daily' as a sensible default.
# See https://docs.microsoft.com/en-us/azure/devops/pipelines/build/variables?view=azure-devops&tabs=yaml#build-variables-devops-services for full list.
$prereleaseCategory = "daily"
}
$prereleaseTag = "-$prereleaseCategory.$BuildId"
$version = "$(Get-Content cli/version.txt)$prereleaseTag"
Set-Content cli/version.txt -Value $version
Write-Host "Set version.txt contents to: $version"