相关疑难解决方法(0)

GitLab CI:即使脚本失败,如何继续工作

我的管道中有一份工作,其中有一个包含两个非常重要步骤的脚本:

  • mvn test 对我的代码运行 JUnit 测试
  • junit2html 将测试的 XML 结果转换为 HTML 格式(查看结果的唯一可能方法,因为我的管道不是通过 MR 完成的)作为工件上传到 GitLab
  • docker rm 销毁之前在管道中创建的容器

我的问题是,当我的测试失败时,脚本会立即停止在mvn test,因此junit2html永远不会到达该步骤,这意味着在失败的情况下永远不会上传测试结果,也永远docker rm不会执行,因此容器仍然存在并弄乱了后续管道其结果。

我想要的是即使脚本在某些时候失败,也能够将工作持续到最后。基本上,该作业在 GitLab CI / CD 中仍应算作失败,但应执行其整个脚本。我该如何配置?

gitlab gitlab-ci

24
推荐指数
1
解决办法
2万
查看次数

如何在 gitlab CI 中检测编译器警告

在我们的 gitlab 服务器上设置 CI 构建的步骤中,我似乎找不到有关如何设置编译器警告检测的信息。构建输出示例:

[100%] Building CXX object somefile.cpp.o
/home/gitlab-runner/builds/XXXXXXX/0/group/project/src/somefile.cpp:14:2: warning: #warning ("This is a warning to test gitlab") [-Wcpp]
 #warning("This is a warning to test gitlab")
 ^
Run Code Online (Sandbox Code Playgroud)

然而,构建结果是success相反的warning或类似的。理想情况下,结果在功能的合并请求中也可见(如果可能的话,阻止合并)。

我无法想象我是唯一一个试图实现这一目标的人,所以我可能正在寻找错误的方向。我发现的“最佳”解决方案是以某种方式手动解析构建输出并生成 JUnit 报告。

我将如何在不让构建作业失败的情况下执行此操作,因为我希望在发生编译器错误时作业失败。

更新

对于后来偶然发现这个问题的任何人,代替最佳实践,这就是我解决它的方法:

stages:
  - build
  - check-warnings

shellinspector:
  stage: build
  script:
    - cmake -Bcmake-build -S.
    - make -C cmake-build > >(tee make.output) 2> >(tee make.error)
  artifacts:
    paths:
      - make.output
      - make.error
    expire_in: 1 week

analyse build:
  stage: check-warnings
  script:
    - "if [[ …
Run Code Online (Sandbox Code Playgroud)

gcc compiler-warnings gitlab-ci

8
推荐指数
1
解决办法
5278
查看次数

标签 统计

gitlab-ci ×2

compiler-warnings ×1

gcc ×1

gitlab ×1