首页 > 解决方案 > 使用输出重定向到文件时,Gitlab CI 作业返回退出状态 1

问题描述

我们正在为我们的 Gitlab CI 使用 shell 运行程序。在我们.gitlab-ci.yml有一个工作来构建我们的项目。我可以在 Gitlab Web 视图中看到构建输出,但我想将构建存储到日志文件并将其作为工件上传。构建项目的行如下所示:

emBuild -config "Release" -project "whc_uc1" whc_uc1/whc_uc1.emProject -verbose 2>&1 | Tee-Object -FilePath whc_uc1/build.log | Write-Host

问题是生成了所有日志文件stdoutstderr如果有的话,但构建作业会返回ERROR: Job failed: exit status 1。这发生在有错误和没有错误的构建中。如果我删除该行2>&1 | Tee-Object -FilePath whc_uc1/build.log | Write-Host,那么一切正常。

另一个有效但未stderr在日志文件中输出的解决方案是:

|& tee whc_uc1/build.log

此解决方案创建日志文件并且构建成功,但不幸的是,日志文件没有stderr.

标签: continuous-integrationgitlab-cistdoutgitlab-ci-runnertee

解决方案


我已经通过安装新PowerShell版本 7 解决了这个问题,现在下面的2>&1 | Tee-Object -FilePath工作没有任何问题。


推荐阅读