相关疑难解决方法(0)

Gitlab-CI:有条件的allow_failure

我最近开始为我的代码实现自动测试,我注意到 CI 没有捕获编译器的警告 - 即使有警告,测试也显示为成功。我最初为编译器添加了一个标志,将警告转换为错误 和allow_failure=True,但问题是编译器在第一个警告->错误时停止,并且不会完成整个编译。然后,我使用此处解释的技巧将警告写入文件中,然后测试该文件是否不为零:

    - make 2> >(tee make.warnings)
    - test ! -s make.warnings
Run Code Online (Sandbox Code Playgroud)

整个编译完成后,如果有警告写入文件,这将给出错误 - 并且使用allow_failure=True,这适用于我没有错误/警告的情况,但也适用于我有警告的情况。但是,如果我有真正的错误,这也会在 CI 中显示为警告,并且不会因为allow_failure=True.

我找不到一种方法来allow_failure=True依赖脚本中运行的内容(无需创建新阶段)或使用某些条件(即文件是否为空)。有没有一种简单的方法可以做到我所缺少的?

if-statement compiler-warnings gitlab-ci

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

CI-pipeline 忽略在给定步骤中失败的任何命令

我正在尝试调试 CI 管道,并希望创建一个自定义logger阶段来转储有关管道运行环境的大量信息。

我尝试添加这个:

stages:
    - logger

logger-commands:
    stage: logger
    allow_failure: true
    script:
        - echo 'Examining environment'
        - echo PWD=$(pwd) Using image ${CI_JOB_IMAGE}
        - git --version
        - echo --------------------------------------------------------------------------------
        - env
        - echo --------------------------------------------------------------------------------
        - npm --version
        - node --version
        - echo java -version
        - mvn --version
        - kanico --version
        - echo -------------------------------------------------------------------------------- 
Run Code Online (Sandbox Code Playgroud)

问题是 Java 命令因java未安装而失败。错误说:

/bin/sh: eval: line 217: java: not found
Run Code Online (Sandbox Code Playgroud)

我知道我可以删除该行java -version,但我试图想出一个可以在所有 CI 管道中使用的固定记录器,因此它将包括:Java、Maven、Node、npm、python 以及我的其他任何内容想要包含,但我意识到其中一些命令将失败,因为某些命令未找到。

搜索上述解决方案让我很接近。

gitlab-ci

6
推荐指数
1
解决办法
9621
查看次数

如果其中一个脚本失败,如何继续运行脚本?亚特实验室CI

这是我的 yml 文件:

stages:
  - testing
  - deploy 

docker_job:
  stage: testing
  tags:
    - docker
  image: atools/chrome-headless:java11-node14-latest 
  
  before_script:
    - npm ci 
    - npx playwright install 
    - npm install allure-commandline --save-dev
  
  script:
    - npm run BookingTestDEV --project=BookingTesting
    - npx playwright test --project=BookEngineTests
    - npm run BookingTestNEO --project=BookingTesting


  after_script:
    - npx allure generate allure-results --clean 
  rules:
      - when: always
  allow_failure: true
  artifacts: 
    when: always
    paths:
      - ./allure-report
    expire_in: 7 day 

pages: 
  stage: deploy
  script:
    - mkdir public 
    - mv ./allure-report/* public
  artifacts:
    paths: …
Run Code Online (Sandbox Code Playgroud)

yaml gitlab gitlab-ci

6
推荐指数
1
解决办法
4065
查看次数