Сценарий оболочки Jenkins возвратил код выхода 1, когда искомая строка не существует - PullRequest
0 голосов
/ 22 апреля 2020

Я приведу в Jenkins следующее для поиска строк сбоев в работе. Это будет выполняться ежедневно.


def sd = "2020" + "${env.START_DATE}" + "0000"
def ed = "2020" + "${env.END_DATE}" + "2359.59"

pipeline {
    agent {label "master"}
    stages {
        stage('Build') {
            steps {

                print(sd)
                sh 'echo "Hello World"'
                sh """
                    pwd
                    #rm end-time start-time
                    #rm $WORKSPACE/$PARSING_OUTPUT
                    touch -t $sd $WORKSPACE/start-time
                    touch -t $ed $WORKSPACE/end-time
                    find /var/lib/jenkins/jobs/. -type f -newer $WORKSPACE/start-time  ! -newer $WORKSPACE/end-time -name '*' -exec grep $SEARCH_STRING /dev/null {} + >> $WORKSPACE/$PARSING_OUTPUT
                    ls -ltr
                """
            }
        post {
                always {
                    echo "sending mail"
                    //mail to: 'e@s.com',
                    //subject: "Parse Jenkins log",
                    //body: "TBD"
                    //body: "${env.BUILD_URL} has result ${currentBuild.result}"
                }
            }
        }
    }
}

Моя проблема в том, что если искомая строка не существует. работа провалилась .. Дисплей вывода консоли ERROR: script returned exit code 1. Я попытался добавить #!/bin/sh, что позволит мне выполнить без параметров - не помогло. какие-либо предложения?

1 Ответ

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

Есть несколько способов достичь выше

1) использовать set + e # Отключить выход при ненулевом

sh '' ''

set + e

..

'' '

2) использовать ИЛИ || с cmd

sh '' ''

$ CMD || echo "строка не существует."

'' '

3) используйте как показано ниже

sh (

скрипт: «ВАШ СКРИПТ»,

returnStatus: true)

...