当前位置: 首页 > 知识库问答 >
问题:

Gitlab CI可以触发其他项目管道阶段吗?

温翔宇
2023-03-14

我有一个A项目和一个E2E项目。我想部署一个项目触发器E2E管道运行测试,但我只想要触发器测试阶段。我们不需要触发器E2E来构建部署。。。等

e2e_tests:
    stage: test
    trigger:
        project: project/E2E
        branch: master
        strategy: depend
        stage: test

我试着在配置中使用stage。但得到了错误未知的密钥:stage

有什么建议吗?

共有1个答案

祝俊
2023-03-14

在接收触发器的E2E项目中,您可以使用规则语法告诉作业仅在管道源是触发器时运行:

build-from-trigger:
  stage: build
  when: never
  rules:
    - if: "$CI_COMMIT_REF_NAME == 'master' && $CI_PIPELINE_SOURCE == 'trigger'
      when: always
  script:
    - ./build.sh # this is just an example, you'd run whatever you normally would here

第一个when语句,when:never设置作业的默认值。默认情况下,此作业永远不会运行。然后使用规则语法,设置一个允许作业运行的条件。如果CI_COMMIT_REF_NAME变量(分支或标记名)是master,而CI_PIPELINE_SOURCE变量(无论从这个管道启动了什么)是触发器,那么我们运行这个作业。

您可以在此处阅读有关when关键字的信息:https://docs.gitlab.com/ee/ci/yaml/#when,您可以在此处阅读规则文档:https://docs.gitlab.com/ee/ci/yaml/#rules

 类似资料:
  • 我正在使用詹金斯声明管道,不知道是否有任何方法可以定期触发特定阶段。 我的意思是,当我们签出SCM时,管道会触发,但阶段2对我们的一些项目来说太长了。因此,我不想等待这个阶段,我只想每天运行这个阶段,但仍然将这个阶段保存在Jenkins文件中。 有没有办法做到这一点?这样做的最佳方法是什么?

  • 我有一个场景,但我有两个项目(a和B),都在Jenkins中配置了多分支管道作业,问题是项目B依赖于项目a。 所以我发现有时候当我在项目A中签入代码时,我也需要在项目A构建后构建项目B。现在,在我开始调查管道构建之前,我将每个分支都有一个作业,然后在Jenkins中为相应的分支触发项目B的适当作业。 我想在Jenkins文件中设置什么,这样当ProjectA/develop执行时,它就会触发Pro

  • 我希望是需要非序列化依赖项才能完成其工作的东西。 我知道我能做到: 这将从源代码读取的字符串包装在包含依赖项的另一个对象中,从而使能够访问这些依赖项,而不需要将它们注入到该对象本身。这是可行的,但我想在Jet之外使用我的映射函数,也是管道的一部分,在这种情况下,必须将依赖关系与被映射的项一起传递,而不是仅仅用它需要的依赖关系初始化映射器,这有点奇怪。它还迫使我毫无意义地在我的流/批处理中为每个项创

  • 问题内容: 我需要在声明式管道中启动一组动态测试。为了更好的可视化目的,我想为每个测试创建一个阶段。有办法吗? 创建一个我知道的阶段的唯一方法是: 我已经看到了这个示例,但是我没有使用声明性语法。 问题答案: 使用声明性语法比声明性语法更具灵活性的脚本化语法,即使声明性文档和建议性更多。 例如,可以循环创建阶段:

  • 我正在使用共享库在Jenkins中构建CI/CD管道。在我的例子中,一些阶段需要通过网络应用编程接口发送执行信息。在这种情况下,我们需要将当前阶段的阶段id添加到api调用中。 如何访问与${stage_NAME}类似的stage id?

  • Eclipse现在有了这个很好的特性,它为您创建了一个名为< code>appcompat_v7的“支持项目”,自动链接两个support-v4 有什么方法可以阻止Eclipse创建额外的克隆吗?