【问题标题】:Jenkins not detect npm errorsJenkins 没有检测到 npm 错误
【发布时间】:2017-08-20 08:05:00
【问题描述】:

我有 node.js 应用程序,当我使用 jenkins 构建时,npm 在测试阶段出现一些错误,但 Jenkins 将最终结果显示为成功。

这是我的 Jenkins 文件: https://github.com/vforv/hapi-seneca-ts/blob/master/Jenkinsfile

这是来自 Jenkins 的日志:npm ERR! enoent 这很可能不是 npm 本身的问题 npm ERR! enoent 与 npm 无关 能够找到一个文件。 npm 错误!恩恩特

npm 错误!请在任何支持请求中包含以下文件: npm 错误!
/home/master/Downloads/workspace/vforv_hapi-seneca-ts_master-NY435NVPNBGYF7GSPZ5PYV4PUKK34TOM7BHZ2B4NOLDFO67XBNUQ/npm-debug.log vforv_hapi-seneca-ts_master-NY435NVPNBGYF7GSPZ5PYV4PUKK34TOM7BHZ2B4NOLDFO67XBNUQ 测试... npm 错误! Linux 4.4.0-87-generic npm ERR! argv "/usr/bin/nodejs" "/usr/bin/npm" "测试"

可能是什么问题?

【问题讨论】:

标签: node.js jenkins


【解决方案1】:

有问题的脚本 (./system/fuge/test.sh) 的内容是这样的:

#!/bin/bash

cd ..
for d in `ls` ; do

    if ! [ $d == 'system' ] && ! [ $d == 'npm-debug.log' ] && ! [ $d == 'README.md' ] && ! [ $d == 'monitor' ] && ! [ $d == 'dist' ] && ! [ $d == 'bases-service' ] && ! [ $d == 'repl' ]; then
        cd $d
        npm test
        echo "$d tested..."
        cd ..
    fi

done

问题是那里的命令 (npm test) 失败,但那里的 last 命令成功,因此脚本成功(因此您的构建成功)。通常,如果脚本中出现任何问题,您希望构建失败。您可以通过告诉脚本不要容忍任何错误的退出代码来实现这一点,方法是像这样设置 errexit:

#!/bin/bash

set -o errexit

cd ..
for d in `ls` ; do

    if ! [ $d == 'system' ] && ! [ $d == 'npm-debug.log' ] && ! [ $d == 'README.md' ] && ! [ $d == 'monitor' ] && ! [ $d == 'dist' ] && ! [ $d == 'bases-service' ] && ! [ $d == 'repl' ]; then
        cd $d
        npm test
        echo "$d tested..."
        cd ..
    fi

done

【讨论】:

  • 如何将它放在每个脚本的全局级别?
  • 我想你是在问你是否可以避免在每个脚本中设置 errexit 但仍然让脚本像设置一样。不,你不能。 :( 你必须以这样的方式编写每个脚本,当发生不好的事情时它会返回一个错误的退出代码。
  • 如果它回答了您的问题,请接受。 :)
猜你喜欢
  • 1970-01-01
  • 2017-03-22
  • 1970-01-01
  • 1970-01-01
  • 2015-07-22
  • 2016-01-18
  • 2019-05-09
  • 2021-12-03
  • 2016-09-04
相关资源
最近更新 更多