Я новичок в Jenkins, Jenkinsfile и Groovy и не знаю, как читать файл JSON в Jenkinsfile. Я прочитал статью по адресу: https://www.jenkins.io/doc/pipeline/steps/pipeline-utility-steps/#readjson-read-json-from-files-in-the-workspace. Однако в статье нет ясности с его реализацией. Я пробовал следующий код, но он терпит неудачу.
def jFile = readJSON file: 'file.json'
pipeline
{
//agent any
agent
{
// Some code
}
stages
{
stage('Init')
{
steps
{
echo jFile['context']
}
}
}
}
Ошибка:
org.jenkinsci.plugins.workflow.steps.MissingContextVariableException: Required context class hudson.FilePath is missing
Perhaps you forgot to surround the code with a step that provides this, such as: node
Какие-либо предложения?
Вам нужно прочитать файл в шаге декларативного конвейера.
pipeline
{
//agent any
agent
{
// Some code
}
stages
{
stage('Init')
{
steps
{
script {
def jFile = readJSON file: 'file.json'
echo "${jFile['context']}"
}
}
}
}
}
Из другого поста SO я обнаружил, что def jFile = readJSON file: 'file.json'
, который должен быть частью environment {}
, он удаляет ошибку, но через другой, то есть Cannot get property 'context' on null object
. Однако context
существует в файле JSON.
Вам нужно обернуть код в скрипт{}-блок, см.: stackoverflow.com/questions/55508871/…. Кроме того, jFile.context
также должен работать для доступа к значению.
Спасибо за вклад, однако это не сработало. Получил ошибку:
Expected a step @ line 51, column 17. def jFile = readJSON file: 'file.json'