Page tree
Skip to end of metadata
Go to start of metadata
import com.atlassian.jira.component.ComponentAccessor
import com.atlassian.jira.project.version.Version

// 配置源项目与目标项目 Key
final String sourceProjectKey = "L200A"
final String targetProjectKey = "JS"

def projectManager = ComponentAccessor.projectManager
def versionManager = ComponentAccessor.versionManager

def sourceProject = projectManager.getProjectObjByKey(sourceProjectKey)
def targetProject = projectManager.getProjectObjByKey(targetProjectKey)

assert sourceProject : "找不到源项目: ${sourceProjectKey}"
assert targetProject : "找不到目标项目: ${targetProjectKey}"

// 1. 获取源项目所有版本
Collection<Version> sourceVersions = versionManager.getVersions(sourceProject.id)
def existingNames = versionManager.getVersions(targetProject.id)*.name as Set

sourceVersions.each { version ->
    // 只处理已发布版本(按需保留或删除此判断)
    if (!version.released) return
    if (version.name in existingNames) return  // 跳过已存在
    // 2. 调用原生 createVersion 写入目标项目
    // 签名:createVersion(name, startDate, releaseDate, description, projectId, scheduleAfterVersion, released)
    versionManager.createVersion(
        version.name,
        version.startDate,
        version.releaseDate,
        version.description,
        targetProject.id,
        null,              // scheduleAfterVersion: 无需排序则传 null
        version.released
    )
}
return "Version copy completed. Source: ${sourceProjectKey}, Target: ${targetProjectKey}"
  • No labels