Example scripts
To homepage
Bitbucket

Repository Report
App in script

ScriptRunner For Bitbucket
by Adaptavist
Compatibility

Bitbucket (6.0 - 7.17)

ScriptRunner For Bitbucket (7.10.0)
Language |
groovy
import com.atlassian.bitbucket.project.Project
import com.atlassian.bitbucket.project.ProjectService
import com.atlassian.bitbucket.repository.RefService
import com.atlassian.bitbucket.repository.Repository
import com.atlassian.bitbucket.repository.RepositoryService
import com.atlassian.bitbucket.repository.RepositoryTagsRequest
import com.atlassian.bitbucket.util.PageUtils
import com.atlassian.sal.api.component.ComponentLocator
import groovy.xml.MarkupBuilder
def final PAGE_SIZE = 1000
def projectService = ComponentLocator.getComponent(ProjectService)
def repositoryService = ComponentLocator.getComponent(RepositoryService)
def refService = ComponentLocator.getComponent(RefService)
def allProjects = PageUtils.toStream(projectService.&findAll, PAGE_SIZE).collect { it as Project }
def tagsByProject = allProjects.collect { project ->
def repos = PageUtils.toStream({ pageRequest ->
repositoryService.findByProjectKey(project.key, pageRequest)
}, PAGE_SIZE).collect { it as Repository }
def repoTags = repos.collectEntries { repo ->
def tags = PageUtils.toStream({ pageRequest ->
refService.getTags(new RepositoryTagsRequest.Builder(repo).build(), pageRequest)
}, PAGE_SIZE)*.displayId
[(repo.name): tags]
}
[
project : project.name,
repositories: repoTags
]
}
def writer = new StringWriter()
def builder = new MarkupBuilder(writer)
builder.table(class: 'aui') {
thead {
tr {
th('Project Name')
th('Repository Name')
th('Tags')
}
}
tbody {
tagsByProject.each { dataRow ->
dataRow.repositories.eachWithIndex { Map.Entry repoRow, i ->
tr {
td {
if (i == 0) {
b(dataRow.project)
}
}
td(repoRow.key)
td {
table {
tbody {
repoRow.value.each { tag ->
tr {
td(tag)
}
}
}
}
}
}
}
}
}
}
writer.toString()
Having an issue with this script?
Report it here