Continuous integration 如何使通过API调用另一个管道的Gitlab管道失败?

Continuous integration 如何使通过API调用另一个管道的Gitlab管道失败?,continuous-integration,gitlab,gitlab-ci,continuous-deployment,gitlab-api,Continuous Integration,Gitlab,Gitlab Ci,Continuous Deployment,Gitlab Api,我有2份Gitlab回购协议: 项目A 项目A的集成测试 如果集成测试失败,我想停止项目A的管道/构建,但当前即使集成测试失败,项目A管道也会通过 项目A的My.gitlab ci.yml定义了以下7个阶段: stages: - build - test - publish - dev-deployment - staging-deployment - trigger-integration-tests - prod-deployment 第二个最后阶段(触发集成测

我有2份Gitlab回购协议:

  • 项目A
  • 项目A的集成测试
  • 如果集成测试失败,我想停止项目A的管道/构建,但当前即使集成测试失败,项目A管道也会通过

    项目A的My
    .gitlab ci.yml
    定义了以下7个阶段:

    stages:
      - build
      - test
      - publish
      - dev-deployment
      - staging-deployment
      - trigger-integration-tests
      - prod-deployment
    
    第二个最后阶段(
    触发集成测试
    )通过使用with
    curl
    ,启动集成测试项目:

    trigger-integration-tests:
      stage: trigger-integration-tests
      image: ubuntu:16.04
      script:
      - apt-get update && apt-get install -y curl
      - "curl -X POST -F token=$INTEGRATION_TESTS_TOKEN -F variables[PROJECT_ID]=$CI_PROJECT_ID -F variables[BRANCH_NAME]=$CI_COMMIT_REF_NAME -F ref=master https://gitlab.mycompany.com/api/v4/projects/123/trigger/pipeline"
      allow_failure: false
      only:
      - master
    
    我尝试添加
    allow\u failure:false
    标志,但没有帮助,因此我正在寻找更多的想法

    我找到了,但不确定是否有更简单的解决方案。

    如a上所述,您可以执行以下操作:

    从主项目中,使用Python/Bash脚本:

  • 触发集成测试管道(并捕获管道ID)
  • 使用捕获的ID(可以是
    正在运行
    挂起
    失败
    取消
    跳过
    )轮询管道的
  • 如果失败,则引发异常/错误
  • 请参阅以获取实现此目的的python脚本示例