groovy 如何在jenkins中比较同一列表中的两个元素?

clj7thdc  于 2023-05-06  发布在  Jenkins
关注(0)|答案(1)|浏览(143)

我正在运行一个jenkins声明性管道作业,我试图比较列表中的元素,并只获取两个元素中相同的部分。
示例:

myList = [/lambda/billMechanism/createCustomerOrderBill, /lambda/billMechanism/createCustomerOrderBill/src, /lambda/billMechanism/createCustomerOrderBill/test, /lambda/billMechanism/isLastPaidBillInCracePeriod, /lambda/billMechanism/isLastPaidBillInCracePeriod/src, /lambda/billMechanism/isLastPaidBillInCracePeriod/test,/lambda/copyPaymentInfo, /lambda/copyPaymentInfo/src, /lambda/copyPaymentInfo/test, /lambda/custOrdWorkflFinancialCharge, /lambda/custOrdWorkflFinancialCharge/src, /lambda/custOrdWorkflFinancialCharge/test,]

我的预期输出:

myList = [/lambda/billMechanism/createCustomerOrderBill,/lambda/billMechanism/isLastPaidBillInCracePeriod, /lambda/copyPaymentInfo, /lambda/custOrdWorkflFinancialCharge,]

在这里,我只是试图通过比较同一列表中的两个元素来获取公共部分。
我试图迭代for循环,但花费了更多的时间。

`for (int i = 0; i < myList.size(); i++) {
                    s1 = "${myList[i]}"
                    for (int j = i+1; j < myList.size(); j++) {

                            sh "echo ${myList[j]}"

                    }
                }`
oxf4rvwz

oxf4rvwz1#

最简单的方法是使用groupBy并删除变量部分,如/src/test

def myList = ['/lambda/billMechanism/createCustomerOrderBill', '/lambda/billMechanism/createCustomerOrderBill/src', '/lambda/billMechanism/createCustomerOrderBill/test', '/lambda/billMechanism/isLastPaidBillInCracePeriod', '/lambda/billMechanism/isLastPaidBillInCracePeriod/src', '/lambda/billMechanism/isLastPaidBillInCracePeriod/test', '/lambda/copyPaymentInfo', '/lambda/copyPaymentInfo/src', '/lambda/copyPaymentInfo/test', '/lambda/custOrdWorkflFinancialCharge', '/lambda/custOrdWorkflFinancialCharge/src', '/lambda/custOrdWorkflFinancialCharge/test',]

def commonParts = myList.groupBy{ it.replaceFirst( /\/(src|test)$/, '' ) }.keySet()

assert commonParts.toString() == '[/lambda/billMechanism/createCustomerOrderBill, /lambda/billMechanism/isLastPaidBillInCracePeriod, /lambda/copyPaymentInfo, /lambda/custOrdWorkflFinancialCharge]'

相关问题