Jenkins管道,解析csv

时间:2017-11-02 20:08:50

标签: csv jenkins jenkins-pipeline

我一直在尝试在Jenkins管道中进行简单的解析CSV。

我的CSV是一个简单的CSV,包括计算机名称,IP地址,子网掩码,默认网关及其主DNS服务器地址

所以

SystemName,IPAddress,Subnet,DefGate,DNS
server1,10.10.10.10,255.255.255.0,10.10.10.1,10.10.10.1
server2,10.10.10.11,255.255.255.0,10.10.10.1,10.10.10.1

我的脚本就是这样(基本上想要证明我可以读取csv按行拆分然后拆分,上的每一行并逐行回显各个值):

   stage('Parse the CSV') {
        steps {
            script {
                dir ('FolderWhereCSVIsClonedFromGit') {
                    if (fileExists('MyCSV.csv')) {
                        echo ' MyCSV.csv found'

                        readFile("MyCSV.csv").eachLine { line, count ->
                            def fields = line.split(',')
                            for(String item: fields) {
                                println item
                                println ' you are parsing line : ' + count
                                }
                                nodes["line${count}"] = {
                                    node {
                                        echo fields[0] + ': ' + fields[1] + ': ' + fields[2] + ': ' + fields[3] + ': ' + fields[4];
                                    }
                                }
                    }
                    } else {
                        echo ' Machines.csv Not found. Failing.'
                    }

...

每次代码运行时,它只返回第一行,虽然它被正确分割后,任何后续行都不会被解析并打印到控制台。

Jenkins安装是一个托管服务,虽然我可以安装额外的模块/插件,但不知道该问什么让我不知所措。

2 个答案:

答案 0 :(得分:3)

这是一个已知错误:JENKINS-46988

您可以像这样解决此问题:

readFile("/tmp/MyCSV.csv").split('\n').each { line, count ->

答案 1 :(得分:1)

聚会晚了一点,但是对于以后的观看者来说,readCSV使CSV的使用变得非常容易,因为它以矩阵形式返回它:

readCSV("/tmp/MyCSV.csv").each { line ->
    line.each { field ->
        // ...
    }
}