Вопрос или проблема
Я хотел бы добавить значение спринта (или имя, или строку, или идентификатор) в существующий тикет JIRA с помощью Powershell, а именно вызвать invoke-restmethod (не с помощью curl).
Может кто-нибудь упомянуть об известной ссылке или привести пример?
На основе доступной онлайн-документации кажется, что вам нужно отправить POST-запрос на /rest/agile/1.0/sprint/{sprintId}/issue
:
$jiraHostName = "https://<введите имя хоста jira>"
$targetSprintId = 123 # замените на актуальный идентификатор спринта
$oauthBearerToken = "<введите токен>" # см. https://confluence.atlassian.com/adminjiraserver/jira-oauth-2-0-provider-api-1115659070.html
$issuesToUpdate = @( # замените на актуальные идентификаторы задач
'PROJ-123',
'PROJ-456'
)
$irmArgs = @{
Uri = "${jiraHostName}/rest/agile/1.0/sprint/${targetSprintId}/issue"
Headers = @{
'Authorization' = "Bearer $oauthBearerToken"
'X-Atlassian-Token' = 'nocheck'
}
Method = Post
Body = @{
'issues' = $issuesToUpdate
}
ContentType="application/json"
}
Invoke-RestMethod @irmArgs
Ответ или решение
Чтобы добавить значение спринта в существующий тикет JIRA с помощью PowerShell и команды Invoke-RestMethod
, вам необходимо выполнить несколько шагов для настройки и отправки POST-запроса к API JIRA. Следуйте следующему пошаговому руководству.
Шаг 1: Получите необходимые данные
Перед тем как начать, убедитесь, что у вас есть:
- Идентификатор спринта: Убедитесь, что у вас есть правильный идентификатор спринта (
sprintId
), в который вы хотите переместить задания. - Токен OAuth: Убедитесь, что вы имеете действующий токен для авторизации API. Ознакомьтесь с документацией Atlassian для получения более подробной информации.
- Идентификаторы тикетов: Запишите идентификаторы тикетов, которые вы хотите обновить, в формате
'НАЗВАНИЕ-ПРОЕКТА-НУМЕР'
(например,'PROJ-123'
).
Шаг 2: Подготовьте PowerShell скрипт
Ниже приведен пример кода на PowerShell для добавления заданий в спринт:
# Установите имя вашего хоста JIRA
$jiraHostName = "https://<ваш_домен_jira>"
# Укажите идентификатор спринта
$targetSprintId = 123 # замените на фактический идентификатор спринта
# Вставьте ваш токен OAuth
$oauthBearerToken = "<ваш_токен>"
# Укажите идентификаторы тикетов, которые нужно обновить
$issuesToUpdate = @(
'PROJ-123', # замените на фактические идентификаторы тикетов
'PROJ-456'
)
# Подготовьте аргументы для Invoke-RestMethod
$irmArgs = @{
Uri = "${jiraHostName}/rest/agile/1.0/sprint/${targetSprintId}/issue"
Headers = @{
'Authorization' = "Bearer $oauthBearerToken"
'X-Atlassian-Token' = 'nocheck'
}
Method = 'Post'
Body = @{
'issues' = $issuesToUpdate
} | ConvertTo-Json
ContentType = "application/json"
}
# Выполните POST запрос
$response = Invoke-RestMethod @irmArgs
# Выведите результат
$response
Шаг 3: Запускайте скрипт
Сохраните скрипт в файл с расширением .ps1
, откройте PowerShell и выполните его. Убедитесь, что вы запускаете PowerShell с соответствующими правами для выполнения скриптов и сеть имеет доступ к вашему серверу JIRA.
Объяснение кода
Invoke-RestMethod
: Эта команда используется для выполнения REST API запросов. Мы используем ее для отправки запросов к API JIRA.Uri
: Указывает на конечную точку API, к которой вы обращаетесь. В данном случае это адрес для добавления тикетов в спринт.Headers
: Здесь мы указываем заголовки, включая токен авторизации и специальный заголовокX-Atlassian-Token
, который предотвращает CSRF-атаки.Body
: В теле запроса передаются идентификаторы тикетов в формате JSON.
Заключение
Этот подход позволяет эффективно и просто обновить значения спринта для существующих тикетов JIRA с использованием PowerShell. Убедитесь, что все параметры указаны корректно, чтобы избежать ошибок во время выполнения запроса. Если возникнут какие-либо проблемы, проверьте логи JIRA и убедитесь, что ваш токен OAuth активен и имеет достаточные разрешения для выполнения указанных действий.