Octopus.Script exported 2019-03-26 by bobjwalker belongs to ‘Other’ category.
Update version to Jira tickets based on release number being deployed
Parameters
When steps based on the template are included in a project’s deployment process, the parameters below can be set.
Username
Jira.Version.Username =
The username of the account that will be used to update Jira ticket. The account should have sufficient permissions in JIRA to update ticket.
Password
Jira.Version.Password =
The password of the account.
Version
Jira.Version.Name =
The version that needs to updated to Fix Versions field in Jira ticket. If the version is not found, a new version will be created under respective project
JQL
Jira.Version.Query =
The JIRA query that should be used to select issues that will be updated with Fix Versions (e.g. status = Completed AND Status = “Ready for Test Deploy”)
Project Key
Jira.Version.ProjectKey =
The project where version to be created
Get Versions API URL
Jira.Version.GetVersionsAPIURL =
API URL to get all the versions from a particular project.
Create Version API URL
Jira.Version.CreateVersionAPIURL =
API URL to create version on a particular project.
Script body
Steps based on this template will execute the following PowerShell script.
#require version 3.0
param (
[System.Uri]$Uri,
[string]$Jql,
[string]$Version,
[string]$User,
[string]$Password,
[string]$ProjectKey
)
$ErrorActionPreference = "Stop"
$AllProtocols = [System.Net.SecurityProtocolType]'Tls,Tls11,Tls12'
[Net.ServicePointManager]::SecurityProtocol = $AllProtocols
function Get-Param($Name, [switch]$Required, $Default) {
$result = $null
if ($OctopusParameters -ne $null) {
$result = $OctopusParameters[$Name]
}
if ($result -eq $null) {
$variable = Get-Variable $Name -EA SilentlyContinue
if ($variable -ne $null) {
$result = $variable.Value
}
}
if ($result -eq $null) {
if ($Required) {
throw "Missing parameter value $Name"
} else {
$result = $Default
}
}
return $result
}
function Jira-QueryApi
{
Param (
[Uri]$Query,
[string]$Username,
[string]$Password
);
Write-Host "Querying JIRA API $($Query.AbsoluteUri)"
# Prepare the Basic Authorization header - PSCredential doesn't seem to work
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $Username,$Password)))
$headers = @{Authorization=("Basic {0}" -f $base64AuthInfo)}
# Execute the query
Invoke-RestMethod -Uri $Query -Headers $headers
}
function Jira-ExecuteApi
{
Param (
[Uri]$Query,
[string]$Body,
[string]$Username,
[string]$Password
);
Write-Host "Updating ticket : $($Query.AbsoluteUri)"
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $Username,$Password)))
$headers = @{Authorization=("Basic {0}" -f $base64AuthInfo)}
Invoke-RestMethod -Uri $Query -Headers $headers -UseBasicParsing -Body $Body -Method Put -ContentType "application/json"
}
function Jira-CreateVersion
{
Param (
[Uri]$Query,
[string]$Body,
[string]$Username,
[string]$Password
);
Write-Host "Creating a version $($Query.AbsoluteUri)"
$base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $Username,$Password)))
$headers = @{Authorization=("Basic {0}" -f $base64AuthInfo)}
Invoke-RestMethod -Uri $Query -Headers $headers -UseBasicParsing -Body $Body -Method Post -ContentType "application/json"
}
function Jira-GetVersions
{
Param (
[Uri]$VersionsUri,
[string]$Username,
[string]$Password
);
$versions = Jira-QueryApi -Query $VersionsUri -Username $Username -Password $Password
$versions
}
function Jira-PostUpdate
{
Param (
[Uri]$IssueUri,
[string]$Username,
[string]$Password,
[string]$Body
);
Jira-ExecuteApi -Query $IssueUri -Body $body -Username $Username -Password $Password
}
function Jira-UpdateTicket
{
Param (
[Uri]$BaseUri,
[Uri]$IssueUri,
[string]$Username,
[string]$Password,
[string]$Version,
[string]$ProjectKey,
[System.Uri]$GetVersionsAPIURL,
[System.Uri]$CreateVersionAPIURL
);
$query = $IssueUri.AbsoluteUri
$uri = [System.Uri] $query
$versionuri = $GetVersionsAPIURL
$createversionuri = $CreateVersionAPIURL
$versions = Jira-GetVersions -VersionsUri $versionuri -Username $Username -Password $Password
$match = $versions | Where name -eq $Version | Select -First 1
If ($match -ne $null)
{
$body = "{ ""update"" : { ""fixVersions"" : [ {""add"" : {""name"" : ""$Version""} } ] } }"
Jira-PostUpdate -IssueUri $uri -Body $body -Username $Username -Password $Password
}
else
{
$body = "{ ""name"": ""$Version"", ""project"": ""$ProjectKey""}"
Jira-CreateVersion -Query $createversionuri -Body $body -Username $Username -Password $Password
$body = "{ ""update"" : { ""fixVersions"" : [ {""add"" : {""name"" : ""$Version""} } ] } }"
Jira-PostUpdate -IssueUri $uri -Body $body -Username $Username -Password $Password
}
}
function Jira-UpdateTickets
{
Param (
[Uri]$BaseUri,
[string]$Username,
[string]$Password,
[string]$Jql,
[string]$Version,
[string]$ProjectKey,
[System.Uri]$GetVersionsAPIURL,
[System.Uri]$CreateVersionAPIURL
);
$api = New-Object -TypeName System.Uri -ArgumentList $BaseUri, ("/rest/api/2/search?jql=" + $Jql)
$json = Jira-QueryApi -Query $api -Username $Username -Password $Password
If ($json.total -eq 0)
{
Write-Output "No issues were found that matched your query : $Jql"
}
Else
{
ForEach ($issue in $json.issues)
{
Jira-UpdateTicket -BaseUri $BaseUri -IssueUri $issue.self -Version $Version -Username $Username -Password $Password -ProjectKey $ProjectKey -GetVersionsAPIURL $GetVersionsAPIURL -CreateVersionAPIURL $CreateVersionAPIURL
}
}
}
& {
param(
[System.Uri]$Uri,
[string]$Jql,
[string]$Version,
[string]$User,
[string]$Password,
[string]$ProjectKey,
[System.Uri]$GetVersionsAPIURL,
[System.Uri]$CreateVersionAPIURL
)
Write-Host "JIRA - Update Version Number"
Write-Host " Updating Fix Versions to : $Version"
try {
Jira-UpdateTickets -BaseUri $Uri -Jql $Jql -Version $Version -Username $User -Password $Password -ProjectKey $ProjectKey -GetVersionsAPIURL $GetVersionsAPIURL -CreateVersionAPIURL $CreateVersionAPIURL
} catch {
Write-Host -ForegroundColor Red "An error occurred while attempting to update Fix Versions in JIRA issues"
Write-Host -ForegroundColor Red $_.Exception | Format-List -Force
}
} `
(Get-Param "Jira.Version.Url" -Required) `
(Get-Param "Jira.Version.Query" -Required) `
(Get-Param "Jira.Version.Name" -Required) `
(Get-Param "Jira.Version.Username" -Required) `
(Get-Param "Jira.Version.Password" -Required) `
(Get-Param "Jira.Version.ProjectKey" -Required) `
(Get-Param "Jira.Version.GetVersionsAPIURL" -Required) `
(Get-Param "Jira.Version.CreateVersionAPIURL" -Required)
Provided under the Apache License version 2.0.
To use this template in Octopus Deploy, copy the JSON below and paste it into the Library → Step templates → Import dialog.
{
"Id": "c691729f-685a-4339-bba9-716633b221ae",
"Name": "JIRA - Update Version Number",
"Description": "Update version to Jira tickets based on release number being deployed",
"Version": 2,
"ExportedAt": "2019-03-26T19:05:07.140Z",
"ActionType": "Octopus.Script",
"Author": "bobjwalker",
"Packages": [],
"Parameters": [
{
"Id": "4f231879-328a-4ea0-986c-aa6a2abf8e40",
"Name": "Jira.Version.Url",
"Label": "JIRA URL",
"HelpText": "The base URL of the JIRA Server (e.g. https://company.atlassian.net)",
"DefaultValue": "",
"DisplaySettings": {
"Octopus.ControlType": "SingleLineText"
}
},
{
"Id": "b16ac5da-e984-4f46-8cbd-793401be3a9b",
"Name": "Jira.Version.Username",
"Label": "Username",
"HelpText": "The username of the account that will be used to update Jira ticket. The account should have sufficient permissions in JIRA to update ticket.",
"DefaultValue": "",
"DisplaySettings": {
"Octopus.ControlType": "SingleLineText"
}
},
{
"Id": "056b87ba-930c-4607-81e4-557503daa237",
"Name": "Jira.Version.Password",
"Label": "Password",
"HelpText": "The password of the account.",
"DefaultValue": "",
"DisplaySettings": {
"Octopus.ControlType": "Sensitive"
}
},
{
"Id": "458dcb98-1843-41c7-bf22-c451a18aa693",
"Name": "Jira.Version.Name",
"Label": "Version",
"HelpText": "The version that needs to updated to Fix Versions field in Jira ticket. If the version is not found, a new version will be created under respective project",
"DefaultValue": "",
"DisplaySettings": {
"Octopus.ControlType": "SingleLineText"
}
},
{
"Id": "d7f0fddd-9518-4070-9c78-166b2dc67197",
"Name": "Jira.Version.Query",
"Label": "JQL",
"HelpText": "The JIRA query that should be used to select issues that will be updated with Fix Versions (e.g. status = Completed AND Status = \"Ready for Test Deploy\")",
"DefaultValue": "",
"DisplaySettings": {
"Octopus.ControlType": "SingleLineText"
}
},
{
"Id": "30334b2e-db2f-4a3e-878b-511686a58c9f",
"Name": "Jira.Version.ProjectKey",
"Label": "Project Key",
"HelpText": "The project where version to be created",
"DefaultValue": "",
"DisplaySettings": {
"Octopus.ControlType": "SingleLineText"
}
},
{
"Id": "d858e2de-4dcc-4b1f-bd56-f0cb4d11b347",
"Name": "Jira.Version.GetVersionsAPIURL",
"Label": "Get Versions API URL",
"HelpText": "API URL to get all the versions from a particular project.",
"DefaultValue": "",
"DisplaySettings": {
"Octopus.ControlType": "SingleLineText"
}
},
{
"Id": "9747a96d-788e-45c7-816c-ee1bf91a6665",
"Name": "Jira.Version.CreateVersionAPIURL",
"Label": "Create Version API URL",
"HelpText": "API URL to create version on a particular project.",
"DefaultValue": "",
"DisplaySettings": {
"Octopus.ControlType": "SingleLineText"
}
}
],
"Properties": {
"Octopus.Action.Script.Syntax": "PowerShell",
"Octopus.Action.Script.ScriptSource": "Inline",
"Octopus.Action.Script.ScriptBody": "#require version 3.0\n\nparam (\n [System.Uri]$Uri,\n [string]$Jql,\n [string]$Version,\n [string]$User,\n [string]$Password,\n [string]$ProjectKey \n)\n\n$ErrorActionPreference = \"Stop\"\n$AllProtocols = [System.Net.SecurityProtocolType]'Tls,Tls11,Tls12'\n[Net.ServicePointManager]::SecurityProtocol = $AllProtocols\n\nfunction Get-Param($Name, [switch]$Required, $Default) {\n $result = $null\n\n if ($OctopusParameters -ne $null) {\n $result = $OctopusParameters[$Name]\n }\n\n if ($result -eq $null) {\n $variable = Get-Variable $Name -EA SilentlyContinue \n if ($variable -ne $null) {\n $result = $variable.Value\n }\n }\n\n if ($result -eq $null) {\n if ($Required) {\n throw \"Missing parameter value $Name\"\n } else {\n $result = $Default\n }\n }\n\n return $result\n}\n\nfunction Jira-QueryApi\n{\n Param (\n [Uri]$Query,\n [string]$Username,\n [string]$Password\n );\n\n Write-Host \"Querying JIRA API $($Query.AbsoluteUri)\"\n\n # Prepare the Basic Authorization header - PSCredential doesn't seem to work\n $base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes((\"{0}:{1}\" -f $Username,$Password)))\n $headers = @{Authorization=(\"Basic {0}\" -f $base64AuthInfo)}\n\n # Execute the query\n Invoke-RestMethod -Uri $Query -Headers $headers\n}\n\nfunction Jira-ExecuteApi\n{\n Param (\n [Uri]$Query,\n [string]$Body,\n [string]$Username,\n [string]$Password\n );\n\n Write-Host \"Updating ticket : $($Query.AbsoluteUri)\"\n\n $base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes((\"{0}:{1}\" -f $Username,$Password)))\n $headers = @{Authorization=(\"Basic {0}\" -f $base64AuthInfo)}\n Invoke-RestMethod -Uri $Query -Headers $headers -UseBasicParsing -Body $Body -Method Put -ContentType \"application/json\"\n}\n\nfunction Jira-CreateVersion\n{\n Param (\n [Uri]$Query,\n [string]$Body,\n [string]$Username,\n [string]$Password\n );\n\n Write-Host \"Creating a version $($Query.AbsoluteUri)\"\n\n $base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes((\"{0}:{1}\" -f $Username,$Password)))\n $headers = @{Authorization=(\"Basic {0}\" -f $base64AuthInfo)}\n Invoke-RestMethod -Uri $Query -Headers $headers -UseBasicParsing -Body $Body -Method Post -ContentType \"application/json\"\n}\n\nfunction Jira-GetVersions\n{\n Param (\n [Uri]$VersionsUri,\n [string]$Username,\n [string]$Password\n );\n\n $versions = Jira-QueryApi -Query $VersionsUri -Username $Username -Password $Password \n $versions\n}\n\nfunction Jira-PostUpdate\n{\n Param (\n [Uri]$IssueUri,\n [string]$Username,\n [string]$Password,\n [string]$Body\n );\n\n Jira-ExecuteApi -Query $IssueUri -Body $body -Username $Username -Password $Password\n}\n\nfunction Jira-UpdateTicket\n{\n Param (\n \t[Uri]$BaseUri,\n [Uri]$IssueUri,\n [string]$Username,\n [string]$Password,\n [string]$Version,\n [string]$ProjectKey,\n [System.Uri]$GetVersionsAPIURL,\n [System.Uri]$CreateVersionAPIURL \n );\n\n $query = $IssueUri.AbsoluteUri\n $uri = [System.Uri] $query\n\t\n $versionuri = $GetVersionsAPIURL\n $createversionuri = $CreateVersionAPIURL\n \n $versions = Jira-GetVersions -VersionsUri $versionuri -Username $Username -Password $Password\n \n $match = $versions | Where name -eq $Version | Select -First 1 \n \n If ($match -ne $null)\n { \n\t\t$body = \"{ \"\"update\"\" : { \"\"fixVersions\"\" : [ {\"\"add\"\" : {\"\"name\"\" : \"\"$Version\"\"} } ] } }\"\n Jira-PostUpdate -IssueUri $uri -Body $body -Username $Username -Password $Password \n } \n else\n {\n \t$body = \"{ \"\"name\"\": \"\"$Version\"\",\t\"\"project\"\": \"\"$ProjectKey\"\"}\"\n \tJira-CreateVersion -Query $createversionuri -Body $body -Username $Username -Password $Password\n \n $body = \"{ \"\"update\"\" : { \"\"fixVersions\"\" : [ {\"\"add\"\" : {\"\"name\"\" : \"\"$Version\"\"} } ] } }\"\n Jira-PostUpdate -IssueUri $uri -Body $body -Username $Username -Password $Password \n }\n}\n\nfunction Jira-UpdateTickets\n{\n Param (\n [Uri]$BaseUri,\n [string]$Username,\n [string]$Password,\n [string]$Jql,\n [string]$Version,\n [string]$ProjectKey,\n [System.Uri]$GetVersionsAPIURL,\n [System.Uri]$CreateVersionAPIURL \n );\n\n $api = New-Object -TypeName System.Uri -ArgumentList $BaseUri, (\"/rest/api/2/search?jql=\" + $Jql)\n $json = Jira-QueryApi -Query $api -Username $Username -Password $Password\n\n If ($json.total -eq 0)\n {\n Write-Output \"No issues were found that matched your query : $Jql\"\n }\n Else\n {\n ForEach ($issue in $json.issues)\n {\n Jira-UpdateTicket -BaseUri $BaseUri -IssueUri $issue.self -Version $Version -Username $Username -Password $Password -ProjectKey $ProjectKey -GetVersionsAPIURL $GetVersionsAPIURL -CreateVersionAPIURL $CreateVersionAPIURL\n }\n }\n}\n\n& {\n param(\n [System.Uri]$Uri,\n [string]$Jql,\n [string]$Version,\n [string]$User,\n [string]$Password,\n [string]$ProjectKey,\n [System.Uri]$GetVersionsAPIURL,\n [System.Uri]$CreateVersionAPIURL\n )\n\n Write-Host \"JIRA - Update Version Number\"\n Write-Host \" Updating Fix Versions to : $Version\"\n\n try {\n Jira-UpdateTickets -BaseUri $Uri -Jql $Jql -Version $Version -Username $User -Password $Password -ProjectKey $ProjectKey -GetVersionsAPIURL $GetVersionsAPIURL -CreateVersionAPIURL $CreateVersionAPIURL\n } catch {\n Write-Host -ForegroundColor Red \"An error occurred while attempting to update Fix Versions in JIRA issues\"\n Write-Host -ForegroundColor Red $_.Exception | Format-List -Force\n }\n} `\n(Get-Param \"Jira.Version.Url\" -Required) `\n(Get-Param \"Jira.Version.Query\" -Required) `\n(Get-Param \"Jira.Version.Name\" -Required) `\n(Get-Param \"Jira.Version.Username\" -Required) `\n(Get-Param \"Jira.Version.Password\" -Required) `\n(Get-Param \"Jira.Version.ProjectKey\" -Required) `\n(Get-Param \"Jira.Version.GetVersionsAPIURL\" -Required) `\n(Get-Param \"Jira.Version.CreateVersionAPIURL\" -Required)\n"
},
"Category": "Other",
"HistoryUrl": "https://github.com/OctopusDeploy/Library/commits/master/step-templates//opt/buildagent/work/75443764cd38076d/step-templates/jira-update-version.json",
"Website": "/step-templates/c691729f-685a-4339-bba9-716633b221ae",
"Logo": "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",
"$Meta": {
"Type": "ActionTemplate"
}
}
Page updated on Tuesday, March 26, 2019