Можно ли всплывать код выхода nodejs в jenkins powershell и использовать этот код выхода для установки статуса сборки? - PullRequest
0 голосов
/ 09 мая 2019

У меня есть скрипт nodeJS, который возвращает ненулевые коды выхода, и я запускаю этот скрипт с плагином Powershell в Jenkins в конвейерном задании. Я хотел бы использовать эти коды выхода в конвейере для установки статусов сборки. Я вижу ненулевые коды выхода, например с echo в powershell, но с использованием exit $ LastExitCode всегда завершается с кодом 1.

Вот что у меня сейчас есть:

 def status = powershell(returnStatus: true, script: '''
    try{
        node foo.js
        echo $LastExitCode
        exit $LastExitCode
    } catch {
        exit 0
    }
''')
println status
if(status == 666) {
    currentBuild.result = 'UNSTABLE'
    return
} else if(status == 1) {
    currentBuild.result = 'FAILURE'
    return
} else {
    currentBuild.result = 'SUCCESS'
    return
}

Файл "foo.js" там очень прост:

console.log("Hello from a js file!");
process.exit(666);

Приведенный выше код устанавливает статус сборки как сбойный, так как println status выводит «1». Итак, мой вопрос заключается в том, можно ли каким-либо образом выдавать ненулевые пользовательские коды выхода, которые будут использоваться в коде конвейера, через плагин Powershell? Или есть какой-то другой способ добиться этого, полностью отличающийся от того, что я пытаюсь сделать здесь?

UPDATE: В конце концов я отказался от идеи кодов выхода на данный момент и пошел еще более уродливым, хакерским путем: - (

import org.apache.commons.lang.StringUtils
def filterLogs(String filter_string, int occurrence) {
    def logs = currentBuild.rawBuild.getLog(10000).join('\n')
    int count = StringUtils.countMatches(logs, filter_string);
    if (count > occurrence -1) {
        currentBuild.result='UNSTABLE'
    }
}

А позже в конвейере после запуска сценария nodeJS:

stage ('Check logs') {
    steps {
        filterLogs ('Some specific string I console.log from NodeJS', 1)
    }
}

Это решение я нашел здесь Плагин поиска текста Jenkins, Как я могу использовать этот плагин с jenkinsfile? в качестве ответа на этот вопрос.

Если это единственный способ, я думаю, мне придется с этим жить.

...