Как это сделать, я получаю вывод команды оболочки, выполненной с использованием переменной из Jenkinsfile (groovy)?

У меня есть что-то подобное в файле Jenkinsfile (Groovy), и я хочу записать stdout и код выхода в переменной, чтобы позже использовать информацию.

sh "ls -l" 

Как я могу это сделать, тем более, что кажется, что вы не можете запустить какой-либо groovy-код внутри Jenkinsfile ?

Последняя версия шагового шага позволяет вам сделать следующее:

 // Git committer email GIT_COMMIT_EMAIL = sh ( script: 'git --no-pager show -s --format=\'%ae\'', returnStdout: true ).trim() echo "Git committer email: ${GIT_COMMIT_EMAIL}" 

Другой недокументированной (на данный момент) функцией является опция returnStatus .

 // Test commit message for flags BUILD_FULL = sh ( script: "git log -1 --pretty=%B | grep '\\[jenkins-full]'", returnStatus: true ) == 0 echo "Build full flag: ${BUILD_FULL}" 

Эти параметры добавляются по этой проблеме.

Быстрый ответ:

 sh "ls -l > commandResult" result = readFile('commandResult').trim() 

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

EDIT: JENKINS-26133

EDIT2: не совсем уверен, поскольку какая версия, но шаги sh / bat теперь могут возвращать вывод std, просто:

 def output = sh returnStdout: true, script: 'ls -l' 

Версия Current Pipeline изначально поддерживает функции returnStdout и returnStatus , которые позволяют получать выходные данные или статус с шага sh / bat .

Пример:

 def ret = sh(script: 'uname', returnStdout: true) println ret 

Официальная документация .

это примерный случай, который будет иметь смысл, я верю!

 node('master'){ stage('stage1'){ def commit = sh (returnStdout: true, script: '''echo hi echo bye | grep -o "e" date echo lol''').split() echo "${commit[-1]} " } } 
  • Найдено общие ссылки на коллекцию org.hibernate.HibernateException
  • «зависимости» не могут применяться к «(groovy.lang.Closure)»
  • Скопировать содержимое всего каталога в другой каталог?
  • Groovy: создание карты с конкретными атрибутами объекта JAX-B
  • Поле Gson Serialize, если оно не пустое или не пустое
  • Получить значения из файла свойств с помощью Groovy
  • Как получить доступ к конфигурации Grails в Grails 2.0?
  • Переопределение grails.views.default.codec = 'html' config обратно в 'none'
  • Вычислить прошедшее время в Java / Groovy
  • Скопировать свойства classа Groovy
  • Связывание даты Grails с параметрами в controllerе
  • Interesting Posts

    Почему SetWindowsHookEx должен использоваться с очередью сообщений Windows

    Возможно HDMI с разрешением 2560 x 1440?

    Выгрузили электронные письма в Mail.app

    Сравнение типов с нулевым значением в Linq to Sql

    Как воспроизводить несколько видеофайлов одновременно в одном макете бок о бок в другом представлении на Android

    Для чего нужны драйверы Windows \ etc \ services?

    Установка жесткого диска OSX на Linux

    Почему я должен часто перестраивать кеш иконки в Windows 7?

    Как устранить ошибку «java.net.BindException: Address уже используется: JVM_Bind»?

    Совместимость между 3-контактными и 4-контактными разъемами вентилятора

    Уникальные строки, считая два столбца, в R, без заказа

    Как преобразовать коэффициент в integer \ numeric без потери информации?

    Использование API-интерфейса Nexus для получения последней версии артефакта для данного groupid / artifactId

    Как удалить папку, вложенную достаточно глубоко, и избежать «слишком большого имени файла»?

    Обработка jQuery.ajax продолжается: «success:» vs «.done»?

    Давайте будем гением компьютера.