Копирование очередей проектов службы поддержки в другой проект - malikovalibek/groovyForJira GitHub Wiki
Обзор Скопируйте все очереди службы поддержки из одного проекта в другой. Имя очереди, фильтры JQL, порядок и столбцы копируются в целевой проект.
пример Как менеджер по продукту, я использую очереди, чтобы быть в курсе проблем. Поскольку эти очереди определены проектом, я хочу иметь одинаковые очереди для всех проектов, которые я контролирую. Используя этот сценарий, я могу легко скопировать предпочтительную конфигурацию очереди, что позволяет мне получить доступ к необходимой мне информации без необходимости вручную настраивать очереди для каждого проекта.
Хорошо знать Все существующие очереди в целевом проекте удаляются перед копированием исходных очередей. Ключи JQL исходного проекта заменяются ключом целевого проекта. Определенные JQL в исходном проекте могут включать некоторую информацию, относящуюся к этому проекту. Следовательно, в целевом проекте должны быть те же элементы, которые определены в JQL (статус, типы проблем и т. Д.). С участием ScriptRunner для Jira от Adaptavist
Создано 5 месяцев назад , Обновлено 4 месяца назад
Код сервера Код центра обработки данных
Требования Служба поддержки JiraСлужба поддержки Jira (4.6 - 4.6)
import com.atlassian.jira.component.ComponentAccessor import com.atlassian.servicedesk.api.ServiceDeskManager import com.atlassian.servicedesk.api.queue.QueueService import com.onresolve.scriptrunner.runner.customisers.WithPlugin
@WithPlugin("com.atlassian.servicedesk")
// Specify the master SD project to get the queue form final sourceProjectKey = "SRC" // Specify the key of the SD project to copy the queue to final destinationProjectKey = "DST"
// Get current user logged-in def currentUser = ComponentAccessor.jiraAuthenticationContext.loggedInUser
// Get project objects def sourceProject = ComponentAccessor.projectManager.getProjectObjByKey(sourceProjectKey) def destinationProject = ComponentAccessor.projectManager.getProjectObjByKey(destinationProjectKey)
def queueService = ComponentAccessor.getOSGiComponentInstanceOfType(QueueService) def serviceDeskManager = ComponentAccessor.getOSGiComponentInstanceOfType(ServiceDeskManager)
// Get Service Desk Id related to projects def sourceProjectServiceDeskId = serviceDeskManager.getServiceDeskForProject(sourceProject).id def destinationProjectServiceDeskId = serviceDeskManager.getServiceDeskForProject(destinationProject).id
// Delete all destination project queues def destinationProjectQueues = queueService.newQueueQueryBuilder().serviceDeskId(destinationProjectServiceDeskId).build() queueService.getQueues(currentUser, destinationProjectQueues).results.each { queueService.deleteQueue(currentUser, destinationProjectServiceDeskId, it.id) }
// Get all source project queues and copy to destination project def sourceProjectQueues = queueService.newQueueQueryBuilder().serviceDeskId(sourceProjectServiceDeskId).build() queueService.getQueues(currentUser, sourceProjectQueues).results.eachWithIndex { queue, index -> // Default JQL is removed because when a Queue is created 'project = ' is added by default def newJql = (queue.jql - "project = ${sourceProjectKey}" - "AND").trim() // Replace source key project with destination key project in JQL newJql = newJql.replace(sourceProjectKey, destinationProjectKey) def queueCreateParameters = queueService.newQueueCreateParameterBuilder(destinationProjectServiceDeskId, queue.name) .jql(newJql) .fields(queue.fields) .order(index) .build() queueService.addQueue(currentUser, queueCreateParameters) }