#csv #jenkins #groovy #jenkins-pipeline #jenkins-groovy
#csv #дженкинс #groovy #дженкинс-конвейер #дженкинс-groovy
Вопрос:
Мне нужно записать csv-файл из большого файла json на подчиненном устройстве jenkins с использованием 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])
}
}
Поскольку мы больше не можем использовать file и должны использовать ‘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. Используете ли вы «проект в свободном стиле» в jenkins?
Ответ №1:
Не используйте функции ввода-вывода Groovy, поскольку они будут выполняться на главном устройстве Jenkins. В этом случае всегда используйте шаги Pipeline DSL writeFile
.
Комментарии:
1. Проблема в том, что я буквально понятия не имею, как его использовать, даже какой импорт использовать с этим. Я очень новичок.
2. Однако в этом случае я бы выбрал WriteCSV .
3. Конечно, в наши дни определенно.. я думаю, тогда это было недоступно.