1 2 [CmdletBinding()] 3 param( 4 [Parameter(Mandatory=$true)] 5 [string]$language, 6 [Parameter(Mandatory=$true)] 7 [string]$packageName, 8 [Parameter(Mandatory=$true)] 9 [string]$version, 10 [string]$plannedDate, 11 [string]$serviceName = $null, 12 [string]$packageDisplayName = $null, 13 [string]$packageRepoPath = "NA", 14 [string]$packageType = "client", 15 [string]$packageNewLibrary = "true", 16 [string]$devops_pat = $env:DEVOPS_PAT 17 ) 18 #Requires -Version 6.0 19 Set-StrictMode -Version 3 20 21 if (!(Get-Command az -ErrorAction SilentlyContinue)) { 22 Write-Error 'You must have the Azure CLI installed: https://aka.ms/azure-cli' 23 exit 1 24 } 25 26 az account show *> $null 27 if (!$?) { 28 Write-Host 'Running az login...' 29 az login *> $null 30 } 31 32 az extension show -n azure-devops *> $null 33 if (!$?){ 34 Write-Host 'Installing azure-devops extension' 35 az extension add --name azure-devops 36 } 37 38 . (Join-Path $PSScriptRoot SemVer.ps1) 39 . (Join-Path $PSScriptRoot Helpers DevOps-WorkItem-Helpers.ps1) 40 41 CheckDevOpsAccess 42 43 $parsedNewVersion = [AzureEngSemanticVersion]::new($version) 44 $state = "In Release" 45 $releaseType = $parsedNewVersion.VersionType 46 $versionMajorMinor = "" + $parsedNewVersion.Major + "." + $parsedNewVersion.Minor 47 48 $packageInfo = [PSCustomObject][ordered]@{ 49 Package = $packageName 50 DisplayName = $packageDisplayName 51 ServiceName = $serviceName 52 RepoPath = $packageRepoPath 53 Type = $packageType 54 New = $packageNewLibrary 55 }; 56 57 if (!$plannedDate) { 58 $plannedDate = Get-Date -Format "MM/dd/yyyy" 59 } 60 61 $plannedVersions = @( 62 [PSCustomObject][ordered]@{ 63 Type = $releaseType 64 Version = $version 65 Date = $plannedDate 66 } 67 ) 68 69 $workItem = FindOrCreateClonePackageWorkItem $language $packageInfo $versionMajorMinor -allowPrompt $true -outputCommand $false 70 71 if (!$workItem) { 72 Write-Host "Something failed as we don't have a work-item so exiting." 73 exit 1 74 } 75 76 Write-Host "Updated or created a release work item for a package release with the following properties:" 77 Write-Host " Lanuage: $($workItem.fields['Custom.Language'])" 78 Write-Host " Version: $($workItem.fields['Custom.PackageVersionMajorMinor'])" 79 Write-Host " Package: $($workItem.fields['Custom.Package'])" 80 Write-Host " AssignedTo: $($workItem.fields['System.AssignedTo']["uniqueName"])" 81 Write-Host " PackageDisplayName: $($workItem.fields['Custom.PackageDisplayName'])" 82 Write-Host " ServiceName: $($workItem.fields['Custom.ServiceName'])" 83 Write-Host " PackageType: $($workItem.fields['Custom.PackageType'])" 84 Write-Host "" 85 Write-Host "Marking item [$($workItem.id)]$($workItem.fields['System.Title']) as '$state' for '$releaseType'" 86 $updatedWI = UpdatePackageWorkItemReleaseState -id $workItem.id -state "In Release" -releaseType $releaseType -outputCommand $false 87 $updatedWI = UpdatePackageVersions $workItem -plannedVersions $plannedVersions 88 89 Write-Host "Release tracking item is at https://dev.azure.com/azure-sdk/Release/_workitems/edit/$($updatedWI.id)/" 90