[英]jenkins groovy pipeline sorting
無法正確排序工作表。
腳本:
import groovy.json.JsonSlurper
if (TAGS != 'all') {
return []
}
def image_id = []
def projectList = new URL("https://gitlab.ru/api/v4/search?scope=projects&search=$PROJECT&private_token=$GITLAB_JENKINS_TOKEN")
def projects = new groovy.json.JsonSlurper().parse(projectList.newReader())
projects.each {
project_id = it.id
}
def repository_name = "$NAME_REPOSITORY"
def id = repository_name.tokenize('/ ')[-1].tokenize('.')[0]
def repository_id = id
def imageList = new URL("https://gitlab.ru/api/v4/projects/$project_id/registry/repositories/$repository_id/tags?per_page=100&private_token=$GITLAB_JENKINS_TOKEN")
def image = new groovy.json.JsonSlurper().parse(imageList.newReader())
image.each {
image_id.add(it.name)
}
return image_id
結果
118/ 119/ 120/ 121/ 79/ 80/ ...
collestions 沒有幫助。 最終表的排序方式有哪些
您似乎正在嘗試對數字字符串數組進行排序,但希望它們按數字順序排列。 作為字符串,它們是有序的。
您想對列表進行常規排序,但對數值(121 之前的 79),而不是字符串(“7,9”之前的“1,2,1”)進行排序
我不是 100% 清楚您所引用的“結果”,但該解決方案在適當的情況下適用。
如果項目是列表,
projects.sort(){ a, b -> a.id.toInteger() <=> b.id.toInteger() }.each {
// process numerically sorted items
}
如果image_id是列表,
return image_id.sort(){ a, b -> a.toInteger() <=> b.toInteger() }
應該返回一個排序列表。
IE:
def list = ['118', '119', '120', '78', '79']
println "raw sort"
list.sort().each {
println it
}
println "Integer sort"
list.sort(){ a, b -> a.toInteger() <=> b.toInteger() }.each {
println it
}
return
raw sort
118
119
120
78
79
Integer sort
78
79
118
119
120
如果您嘗試返回已排序的地圖,請參閱此帖子。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.