jua*_*cre 9 continuous-integration automated-tests gitlab powershell-4.0
我有一个在装有 Windows 7 和 powershell 4.0 的 Windows 机器上运行的 gitlab 管道。
.yaml 具有典型的 3 个阶段:构建、测试和部署。
对于第二阶段,我想执行一些简单的测试,生成一个日志文件,该文件应该在测试阶段完成后可用。
这里是测试的脚本部分:
script:
- '$exitCode = (start-process C:\app_versions\app_20181211\bin\app.exe -PassThru -Wait).ExitCode'
- 'cat .\TestLogs\BasicFunctionsTestPlan.log'
- 'exit $exitCode'
artifacts:
paths:
- .\TestLogs
expire_in: 1 year
Run Code Online (Sandbox Code Playgroud)
在这里我遇到了一个问题,在测试运行完成后,即使测试本身失败,阶段也总是成功完成。然后我不得不用错误代码强制脚本退出,以防应用程序告诉我测试失败。
这导致了第二个问题:即使它们可用,也不会创建工件链接(无论如何我的测试都会生成它)。
可能如果我知道如何以更简洁的方式告诉 gitlab 测试失败,那么这些工件无论如何都可以使用。
我同意日志文件不是工件,但我想保留该文件以检查测试的执行情况,也许有更好的方法来保存此文件。
在此先感谢您的帮助!
编辑:
貌似有有同样的问题越来越多的人在这里,也许这有助于更好地理解这一问题。
Eri*_*ijk 13
我有同样的问题,但很容易解决:
您可以使用artifacts:when在作业失败或尽管失败时上传工件。
来源:Gitlab CI yaml 参考:artifacts:when
在 GitLab 8.9 和 GitLab Runner v1.3.0 中引入。
artifacts:when 用于在作业失败或尽管失败时上传工件。
artifacts:when 可以设置为以下值之一:
on_success- 仅在作业成功时上传工件。这是默认设置。on_failure - 仅在作业失败时上传工件。 always - 无论工作状态如何,都可以上传工件。仅在作业失败时上传工件:
job:
artifacts:
when: on_failure
Run Code Online (Sandbox Code Playgroud)
顺便说一句:你可以告诉 Gitlab CI 在工作失败后继续下一个工作 allow_failure: true
来源:Gitlab CI yaml 参考:allow_failure
job1:
stage: test
script:
- execute_script_that_will_fail
allow_failure: true
Run Code Online (Sandbox Code Playgroud)
所以结合起来它可能看起来像:
job1:
stage: test
script:
- execute_script_that_will_fail
allow_failure: true
artifacts:
when: always # or 'on_failure'
paths:
- resulting_artifacts
Run Code Online (Sandbox Code Playgroud)