Continuous integration Gitlab CI允许在前一阶段失败时手动操作

Continuous integration Gitlab CI允许在前一阶段失败时手动操作,continuous-integration,gitlab,gitlab-ci,Continuous Integration,Gitlab,Gitlab Ci,我有一个Gitlab CI/CD管道,它通常工作正常。 我的问题是,我的测试需要超过10分钟,而且它不稳定(但…),所以偶尔会在我不关心的小测试中随机失败 通常,在重试后,它会工作,但如果我需要紧急部署,我需要再等待10分钟。 当我们遇到一个紧急bug时,再花10分钟就太多时间了,所以我正在寻找一种方法来强制部署,即使测试失败 我有下一个伪ci-yaml场景,我没有找到一种方法来实现它 stages: - build - test - deploy setup_and_build:

我有一个Gitlab CI/CD管道,它通常工作正常。
我的问题是,我的测试需要超过10分钟,而且它不稳定(但…),所以偶尔会在我不关心的小测试中随机失败

通常,在重试后,它会工作,但如果我需要紧急部署,我需要再等待10分钟。
当我们遇到一个紧急bug时,再花10分钟就太多时间了,所以我正在寻找一种方法来强制部署,即使测试失败

我有下一个伪ci-yaml场景,我没有找到一种方法来实现它

stages:
  - build
  - test
  - deploy

setup_and_build:
  stage: build
  script:
    - build.sh

test_branch:
  stage: test
  script:
    - test.sh


deploy:
  stage: deploy
  script:
    - deploy.sh
  only:
    - master
我正在寻找一种在测试阶段失败时手动部署的方法。 但是如果我将
when:manual
添加到部署中,那么部署永远不会自动发生

因此,像when:auto\u或manual\u on\u previous\u fail这样的标志将非常有用

目前,Gitlab ci中没有此类标志


您对解决方法或实现方法有何想法?

另一种方法是在紧急发布时跳过测试

为此,请按照“”和:

  • 在触发紧急释放的提交消息中添加“跳过测试”
  • 在测试阶段检查一个变量
即:

.test-template: &test-template
  stage: tests
  except:
    variables:
    - $CI_COMMIT_MESSAGE =~ /\[skip[ _-]tests?\]/i
    - $SKIP_TESTS
如上所述,我们还在模板的except块中包含变量
$SKIP_TESTS

这在从GitLab的web界面手动触发管道时非常有用。
下面是一个例子:


您找到解决方案了吗?