написать CSV-файл на раба Дженкинс, используя Groovy - PullRequest
0 голосов
/ 27 марта 2019

Мне нужно написать CSV-файл из большого файла JSON на раба Дженкинса, используя Groovy. Ранее метод, который я использовал первым, запускался только на «Мастер», см. Ниже:

def file = new FilePath(channel, envVars['WORKSPACE'] + separator + 'FDCUtilities' + separator + 'GroovyTest' + separator + 'json.json')
def outPutCSV = envVars['WORKSPACE'] + separator + 'FDCUtilities' + separator + 'GroovyTest' + separator + 'test.csv'

def results = jsonSlurper.parseText(file.readToString())
def FILE_HEADER = ['ID','TEST NAME','TOTALLINES', 'TOTAL COVERED', 'COVERED %']

new File(outPutCSV).withWriter { fileWriter ->
    csvFilePrinter = new CSVPrinter(fileWriter, CSVFormat.DEFAULT)
    csvFilePrinter.printRecord(FILE_HEADER)
    results.each{
        csvFilePrinter.printRecord([it.id, it.name, it.totalLines, it.totalCovered, it.coveredPercent])
    }
}

Видя, что мы больше не можем использовать файл и должны использовать 'FilePath', я не могу понять всю жизнь, как предыдущий csv-писатель с новым FilePath. Я думаю, что вы просто не можете, так как у меня возникают проблемы с поиском документации, где вы можете добавить файл с filepath или написать csv с ним. Я думал только о том, чтобы сделать строковое значение и назначить csv для файла записи, однако я не могу заставить его выглядеть так, как будто он выглядит правильно или работает.

Мой текущий код:

def jsonSlurper = new JsonSlurper()

// access the files on the current workspace regardless slave or master
def file = new FilePath(channel, envVars['WORKSPACE'] + separator + 'FDCUtilities' + separator + 'GroovyTest' + separator + 'json.json')
def outPutCSV = new FilePath(channel, envVars['WORKSPACE'] + separator + 'FDCUtilities' + separator + 'GroovyTest' + separator + 'test.csv')

def results = jsonSlurper.parseText(file.readToString())

    test = "ID,TEST NAME,TOTAL LINES,TOTAL COVERED,COVERED %"
    results.each {
        test = test.concat(it.id, it.name, it.totalLines, it.totalCovered, it.coveredPercent, "\n")
    }

    outPutCSV.write(test ,null)

Я все еще учусь работать с Groovy и Jenkins, поэтому любая помощь будет принята с благодарностью!

1 Ответ

2 голосов
/ 28 марта 2019

Не используйте функции ввода / вывода Groovy, так как они будут выполняться на Jenkins Master. Всегда используйте Pipeline DSL шаги , в этом случае writeFile.

...