如何解决尽管命令成功执行,Shell仍在Azure Devops管道中显示一堆错误
我正在使用Azure Devops构建我的git repo并将其部署到第三方vps。为此,我通过SSH从Azure Devops登录到服务器,执行shell脚本以提取git repo,并使用ie进行构建。 vue-cli和Laravel。
执行bash脚本时,尽管一切都成功了,但几乎所有命令都收到很多错误-谁能告诉我如何消除这些错误,除非确实失败了(如果npm build退出并失败,将很可能失败)例如代码1)。 请参见下面的屏幕截图。
解决方法
截屏仅对视觉问题真正有用。如有必要,可以使用PasteBin或etc共享长日志。
根据this issue,Azure会跟随其运行代码的外壳程序的开头。因此,在Bash中,除非明确要求停止运行,否则它将继续。
要轻松更改此行为,可以在脚本开头添加set -e
(或set -o errexit
)。 errexit
选项使Bash在命令/ etc返回非零退出代码时退出。
另一个值得添加的是set -o pipefail
选项。如果您有command1 | command2
之类的管道,这将返回任意长度的管道链中的第一个非零退出代码。因此,如果命令1失败但命令2成功,它将从命令1返回失败代码,而不是覆盖它。
最后,在参数扩展过程中遇到未设置的变量时,set -u
(或-o nounset
)会导致错误。如果在非交互式shell中运行,它也会退出。
许多脚本通过在开始时运行set -euo pipefail
来组合它们,以在遇到第一个问题后阻止它们运行。
如果要显式强制退出bash脚本,则可以相应地使用||
和&&
。如果命令失败,则表达式command || exit
将退出,如果命令成功,则command && exit
将退出。
这似乎是从npm petstore
开始的一个错误。您可以检查this discussion。
As a workaround,您可以将此脚本添加到V.3.10.8
并使用package.json
开关运行命令:
--no-optional
此外,您的NPM版本可能过旧。您可以将Node.js tool installer task与"optionalDependencies": {
"fsevents": "*"
},
结合使用,以安装更高版本的node.js和npm。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。