Jenkins / Groove - Динамический этап, показывающий все этапы как неудачные - PullRequest
0 голосов
/ 14 февраля 2019

Я читаю файл сценария оболочки /tmp/cmd_list.sh со скриптом groove и создаю динамический этап для сборки.

Содержимое файла /tmp/cmd_list.sh:

ls
pwd
aaaaaa
who

Только «aaaaaa» mut не выполняется (код выхода 127).Моя проблема в том, что все этапы помечены как неудачные, но когда я вижу журнал, такие команды, как "ls", "pwd" и "who" работают нормально, а код возврата равен 0.

Я пыталсяfoce stage status для box, но безуспешно ... Мой сценарий Groove (Jenkinsfile):

import hudson.model.Result

node('master') {

    stage ('\u27A1 Checkout'){
        sh "echo 'checkout ok'"
    }

    def BUILD_LIST = readFile('/tmp/cmd_list.sh').split()
    for (CMDRUN in BUILD_LIST) {

        def status;

        try {
            node{
                stage(CMDRUN) {

                    println "Building ..."

                    status = sh(returnStatus: true, script: CMDRUN )
                    println "---> EX CODE: "+ status

                    if(status == 0){
                        currentBuild.result = 'SUCCESS'
                        currentBuild.rawBuild.@result = hudson.model.Result.SUCCESS
                    }
                    else{ 
                        currentBuild.result = 'UNSTABLE'
                        currentBuild.rawBuild.@result = hudson.model.Result.UNSTABLE
                    }

                    def e2e = build job:CMDRUN, propagate: false

                }
            }
        }
        catch (e) {
            println "===> " + e
            currentBuild.result = 'UNSTABLE'

            println "++++> EX CODE: "+ status

            if(status == 0){ 
                println "++++> NEW STATUS: "+ status
                currentBuild.rawBuild.@result = hudson.model.Result.SUCCESS
                currentBuild.result = 'SUCCESS'
            }
            else{
                println "++++> NEW STATUS: "+ status
                currentBuild.rawBuild.@result = hudson.model.Result.UNSTABLE
            }

        }


    }

}

И результат: Список сбоев этапа Любой может помочь мне показать правильный статус?Спасибо!

1 Ответ

0 голосов
/ 14 февраля 2019

Я изменил свой скрипт и теперь работаю как положено!

новый код:

node('master') {

    def build_ok = true

    stage ('\u27A1 Checkout'){
        sh "echo 'checkout ok'"
    }


    def BUILD_LIST = readFile('/tmp/cmd_list.sh').split()
    for (CMDRUN in BUILD_LIST) {

        try {
            stage(CMDRUN) {

                println "Building ..."
                sh CMDRUN

            }

        }
        catch (e) { build_ok = false }

    }


    if(build_ok) { currentBuild.result = "SUCCESS" }
    else { currentBuild.result = "FAILURE" }

}

ожидаемый результат

...