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