Архивировать проекты без последних обновлений - malikovalibek/groovyForJira GitHub Wiki

Обзор Заархивируйте все проекты, в которых за последние 365 дней не было создано или обновлено никаких проблем. Используйте этот сценарий как разовое действие с помощью консоли сценариев или запланируйте его как обычную задачу по очистке с помощью функции «Задания».

пример Как администратор, я хочу убедиться, что мой экземпляр Jira работает эффективно и не загроможден. Один из способов сделать это - настроить ежемесячное запланированное задание, которое архивирует все проекты, которые были неактивны более года.

Хорошо знать Критерий, используемый этим скриптом, «Тикеты не создавались и не обновлялись за последние 365 дней», можно легко изменить, так как он находится в формате JQL. С участием ScriptRunner для Jira от Adaptavist

Создано 7 месяцев назад , Обновлено 5 месяцев назад

Код центра обработки данных

Требования Jira SoftwareПрограммное обеспечение Jira (7.10 - 8.6)

import com.atlassian.jira.bc.issue.search.SearchService import com.atlassian.jira.component.ComponentAccessor import com.atlassian.jira.project.archiving.ArchivedProjectService import org.apache.log4j.Level import org.apache.log4j.Logger

def projectManager = ComponentAccessor.projectManager def user = ComponentAccessor.jiraAuthenticationContext.loggedInUser def searchService = ComponentAccessor.getComponent(SearchService) def archivedProjectService = ComponentAccessor.getComponent(ArchivedProjectService)

def log = Logger.getLogger(getClass()) log.setLevel(Level.DEBUG)

def projectsToArchive = projectManager.projects.findAll { project -> // JQL criteria to search within projects. If it returns anything, the project DOESN'T get archived def jqlSearch = "project in (${project.key}) AND (updated > -365d OR created > -365d)" def parseResult = searchService.parseQuery(user, jqlSearch)

if (!parseResult.isValid()) {
    log.warn("The JQL '${jqlSearch}' is not valid. Parse result: ${parseResult.errors}")
    return false
}

searchService.searchCount(user, parseResult.query) == 0

}

projectsToArchive.each { project -> def validationResult = archivedProjectService.validateArchiveProject(user, project.key) if (validationResult.isValid()) { archivedProjectService.archiveProject(validationResult) log.debug("Project ${project.key} has been archived") } else { log.warn("Project ${project.key} could not be archived: ${validationResult.errorCollection}") } }