Дженкинс `if (sh '...')` - PullRequest
       6

Дженкинс `if (sh '...')`

0 голосов
/ 08 апреля 2020

Как я могу заставить Дженкинса выполнить команду sh внутри условия? Я бы хотел, чтобы он прервал выполнение, если он извлекает коммит git, начинающийся с 'WIP'.

Я предполагаю:

stage('Build') {
  steps {
    // some steps ...
    script {
      if (sh "git log -1 --pretty='format:%B' | grep -q ^WIP") {
        currentBuild.result = 'ABORTED'
        return
      }
    }
    // more steps ...
  }
}

... но мой конвейер жалуется на "ожидание"), найдено "git log -1 --pretty =" формат:% B '| grep -q ^ WIP' "

Ответы [ 2 ]

0 голосов
/ 08 апреля 2020

То, как вы используете sh step, не возвращает никакого вывода, а sh(command) не возвращает никакого вывода. Вам нужно использовать sh(script: command, returnStdout: true), чтобы получить выходные данные команды оболочки. Кроме того, вам нужно удалить -q param из grep, чтобы получить любой вывод, возвращаемый на консоль.

stage('Build') {
  steps {
    // some steps ...
    script {
      if (sh(script:"git log -1 --pretty='format:%B' | grep ^WIP", returnStdout: true).trim()) {
        currentBuild.result = 'ABORTED'
        return
      }
    }
    // more steps ...
  }
}
0 голосов
/ 08 апреля 2020

Кажется, проблема парсера Groovy. Просто заключите аргументы в круглые скобки:

if (sh("git log -1 --pretty='format:%B' | grep -q ^WIP"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...