Bash 虽然命令成功,但Shell在Azure Devops管道中显示了大量错误
我正在使用Azure Devops构建git repo并将其部署到第三方vps。我通过SSH从Azure Devops登录到服务器,执行一个shell脚本来拉git repo,并使用ie.vue cli和Laravel构建它 当bash脚本被执行时,我几乎在所有命令上都收到了很多错误,尽管一切都很成功——有谁能告诉我如何消除这些错误,除非某些东西真的失败了(如果npm build以代码1为例退出的话,失败会很好)。 请参见下面的屏幕截图Bash 虽然命令成功,但Shell在Azure Devops管道中显示了大量错误,bash,shell,azure-devops,Bash,Shell,Azure Devops,我正在使用Azure Devops构建git repo并将其部署到第三方vps。我通过SSH从Azure Devops登录到服务器,执行一个shell脚本来拉git repo,并使用ie.vue cli和Laravel构建它 当bash脚本被执行时,我几乎在所有命令上都收到了很多错误,尽管一切都很成功——有谁能告诉我如何消除这些错误,除非某些东西真的失败了(如果npm build以代码1为例退出的话,失败会很好)。 请参见下面的屏幕截图 屏幕截图只对视觉问题有用。如有必要,您可以使用PasteB
屏幕截图只对视觉问题有用。如有必要,您可以使用PasteBin或etc共享长日志 根据Azure的说法,它只是在任何shell中运行代码。因此,在Bash中,除非明确要求停止,否则它将继续 要轻松更改此行为,可以在脚本开头添加
set-e
(或set-o errexit
)。errexit
选项使Bash在命令/etc返回非零退出代码时立即退出
另一个值得添加的是set-o pipefail
选项。如果您有任何类似于command1 | command2
的管道,这将返回任意长度管道链中的第一个非零退出代码。因此,如果command1在上面失败,但command2成功,它将从command1返回失败代码,而不是覆盖它
最后,set-u
(或-o nounset
)在参数扩展期间遇到未设置变量时会导致错误。如果在非交互式shell中运行,它也将退出
许多脚本通过在开始时运行set-euo pipefail
来组合这些脚本,以便在遇到第一个问题后停止它们的运行
如果要显式强制bash脚本退出,可以相应地使用
|
和&&
。如果命令失败,表达式command | | exit
将退出,如果命令成功,表达式command&&exit
将退出。这似乎是从npmV.3.10.8
开始的一个错误。你可以查一下
您可以将此脚本添加到package.json
,并使用--无可选开关运行命令:
"optionalDependencies": {
"fsevents": "*"
},
此外,您的NPM版本可能太旧。您可以与version spec=12.x
一起使用来安装更高的node.js和npm版本。您的packages.config看起来如何?如果在本地命令行中运行相同的npm命令,结果会是什么。