Расширенные операторы if else с помощью grep в Groovy - PullRequest
0 голосов
/ 31 мая 2019

У меня есть следующий Jenkinsfile, который будет искать строку из URL, он отправит уведомление Slack в зависимости от вывода.

stage('Check if present') {
    steps  {
        script{   
         sh """
          if curl -s http://example.foo.com:9000 | grep -q "ERROR"
            then  
              slackSend channel: '#team', message: "Pipeline has been failed due to due to an error, please investigate:${env.BUILD_URL} : http://example.foo.com:9000", teamDomain: 'example', tokenCredentialId: 'foo'    
                echo "Scan result: ERROR" && exit 1  
            elif curl -s http://example.foo.com:9000 | grep -q "WARN"
            then
           slackSend channel: '#team', message: "Pipeline is in WARN state due to a warning, please investigate:${env.BUILD_URL} : http://example.foo.com:9000", teamDomain: 'example', tokenCredentialId: 'foo'
             fi"""
         }
       }
    }

Абсолютно уведомление slackSend не будет работать, так как этоплагин.Я ищу способы сделать то же самое в Groovy, чтобы я мог реализовать slackNotification.

В качестве примера я попробовал следующую логику в Groovy.Но это не сработало, даже если строка отсутствует, если найдена строка печати. ​​

stage('test logic'){
steps{
 script{
     if ('curl -s http://example.foo.com:9000'.execute() | 'grep foo'.execute())
        println("The line is found")
     else {
         println("The line is not found")
         exit 1
     }
       }

}}

1 Ответ

1 голос
/ 31 мая 2019

Вы можете просто использовать Groovy (точнее, Java) .contains (String) , чтобы проверить, содержит ли какая-либо строка другую строку. Также, когда вы выполняете команду в конвейере, вы можете захватить стандартный вывод этой команды.

Код:

stage('test logic'){
  steps{
   script{
     def commandStdout = sh(returnStdout: true, script: "curl -s http://example.foo.com:9000"
     if (commandStdout.contains("foo")) {
        println("The line is found")
     }else {
         println("The line is not found")
         exit 1
     }
   }
  }
}
...