gitlab 的预定义器变量 CI_PIPELINE_SOURCE 的值是什么意思?

Ale*_*lex 16 gitlab

在 gitlab 文档中,您可以找到预定义变量的列表HERE,其中变量CI_PIPELINE_SOURCE被解释为具有可能的值“push、web、schedule、api、external、chat、webide、merge_request_event、external_pull_request_event、parent_pipeline、trigger 或 pipeline”。

但是,没有解释它们的含义。

  • Push:当你将东西推送到分支时?
  • web:当您从 Web GUI 触发管道时?
  • 计划:当管道被计划触发时
  • api:当API请求触发管道时
  • 外部的: ???
  • 聊天: ???
  • 网络:???
  • merge_request_event:似乎是在创建合并请求时触发的。实际合并更改时不会触发
  • 外部拉请求事件:???
  • 父管道:???
  • 扳机: ???
  • 管道:另一条管道?

如果有人知道该文档隐藏在哪里,请让我知道在哪里可以找到它,我将不胜感激。

此外,我如何知道某些更改何时实际合并到分支中?在这种情况下如何触发管道?

Sim*_*ner 25

关于您的第一组问题,我必须向您指出 gitlab CI 文档和 参考资料 部分rules:if。他们对各州有很好的解释,还有一些补充https://docs.gitlab.com/ee/ci/jobs/job_control.html#common-if-clauses-for-rules - 我只是截图这个,所以如果链接过时,人们将来可以联系到它:

CI_PIPELINE_SOURCE

关于您的补充问题:

合并就是推动。我们不会检查某些分支,CI_PIPELINE_SOURCE而是检查分支名称,并简单地针对分支名称进行检查,例如:

    rules:
        - if: '$CI_COMMIT_BRANCH == "master"'
        - if: '$CI_COMMIT_BRANCH == "develop"'
        - if: '$CI_COMMIT_BRANCH =~ /^release.*$/i'
        - if: '$CI_PIPELINE_SOURCE == "merge_request_event"'
Run Code Online (Sandbox Code Playgroud)

例如,这在我们的 gitflow 案例中非常有效。但是您可以改变规则并根据自己的需要轻松定义它们 - 规则文档提供了很多很好的示例,请参阅: https: //docs.gitlab.com/ee/ci/jobs/job_control.html#common-if-规则的条款