Как прочитать команду из пакета. json из файла Jenkins - PullRequest
0 голосов
/ 23 января 2020

У меня есть пакет. json

"scripts": {
"pact:tests": <script>
}

Мне нужно проверить, существует ли в пакете pact: tests. json из JenkinsFile (Groovy). Если он завершается, запустите pact test, иначе пропустите его.

Попробовал пару способов

def pactExists = sh "grep \"pact:tests\" package.json | wc -l"
if(pactExists > 0)
   run pact
else
  skip

Но приведенный выше код возвращает pactExists = null

Try 2:

def pactExists2 = sh "${grep pact:tests package.json}"

Но это напрямую запускает команду, которую я думаю

Попробуйте 3:

def packageJSON = readJSON file: 'package.json'
def pactExists = packageJSON.scripts.pact:tests

Но я получаю ошибку при использовании ':' после pact:

Есть ли способ сохранить вывод в каком-либо var?

1 Ответ

0 голосов
/ 23 января 2020

Если вы хотите получить результат шага sh, вам нужно установить для параметра returnStdout значение true, например

def pactExists = sh(script: "grep \"pact:tests\" package.json | wc -l", returnStdout: true)

В качестве альтернативы, если вы хотите использовать readJSON шаг, то вам нужно будет определить ключ с помощью кавычек, например,

def pactExists = packageJSON.scripts.'pact:tests'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...