繁体   English   中英

按 Groovy jenkins 管道脚本中的值对 map 进行排序

[英]Sort map by value in Groovy jenkins pipeline script

如何在 Jekins 管道脚本中按值对Map进行自定义排序?

此代码在 Jenkins 管道脚本中不太适用:

Map m =[ james  :"silly boy",
         janny  :"Crazy girl",
         jimmy  :"funny man",
         georges:"massive fella" ]

Map sorted = m.sort { a, b -> a.value <=> b.value }

map 仍未排序。

我决定用更好的名称和标签创建一个单独的问题,因为很多人都在努力在这里找到答案: Groovy custom sort a map by value

为此,您必须使用@NonCPS注释创建一个单独的方法:

@NonCPS
def getSorted(def toBeSorted){
    toBeSorted.sort(){ a, b -> b.value <=> a.value }
}

然后从管道脚本中调用它。

Map unsortedMap =[ james  :"silly boy",
         janny  :"Crazy girl",
         jimmy  :"funny man",
         georges:"massive fella" ]
def sortedMap = getSorted(unsortedMap)

参数名称

  • 1.xx
  • 2.xx
  • ...
pipeline {
    agent {
        kubernetes {
            inheritFrom 'seunggabi-batch' 
            defaultContainer 'seunggabi-batch'
        }
    }

    environment {
        COUNTRY = "kr"
        ENV = "prod"
        CLASS = "seunggabi.batch.job.SparkSubmitJob"
    }

    stages {
        stage('Run Job') {
            steps {
                script {
                    ARGS = sorted(params).collect { /$it.value/ } join ","
                }
                sh "/app/static/sh/emr.sh 1 20 ${COUNTRY} ${ENV} ${CLASS} \"${ARGS}\""
            }
        }
    }
}

@NonCPS
def sorted(def m){
    m.sort { /$it.key/ }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM