Gitlab CI:在作业中使用带有触发器的“环境”键

mai*_*air 6 gitlab gitlab-ci

我希望在具有触发器的作业中使用如下所示的环境关键字。


deploy:
 stage: deploy 
 environment:
   name: develop     
 variables:    
   ENV: develop    
 trigger:         
   include:
     - local: '<path to pipeline config>'
Run Code Online (Sandbox Code Playgroud)

但是,它给出错误“配置包含未知密钥:环境”

使用“脚本”而不是触发器可以正常工作。无论如何,它可以与触发器一起使用吗?

San*_*ani 6

是的,显然这是不允许的。我也感觉到了这个错误,并期望环境配置适用于子管道,如下所示

sit-pipeline:
  trigger:
    include:
      - local: pipeline/sit-pipeline.yaml
  stage: deploy
  when: manual
  needs: ["sit-approval"]
  environment:
    name: sit
    url: http://sanjay-sit.com
Run Code Online (Sandbox Code Playgroud)

但这会给出错误 This GitLab CI configuration is invalid: sat-pipeline config contains Unknown key:environment.

这将是一个很好的功能,特别是当我们想要进行一些审批流程并保护环境时。


tpo*_*eba 5

对于子(同一项目)管道,您可能无能为力,但如果有人正在寻找多项目管道的解决方案(就像我一样),那么您可以通过scriptblock 中的 API 进行触发。

这种触发方式几乎与使用trigger关键字相同,唯一的区别是没有strategy选项,因此您必须自己实现必要的行为。

好消息是 GitLab 注意到通过 API 调用的上游和下游管道之间的关系,并在 GUI 中显示这一点。另一个优点是您可以重试此类作业,这与触发作业不同。因此,这与环境和部署功能很好地集成。

另请参阅文档:


syt*_*ech -1

您无法在桥接作业上设置环境。您必须environment.name在包含的配置中设置触发的作业。例如,在pipeline/sit-pipeline.yaml