在 GitLab 的 CI/CD 系统中,如何防止作业在我的分支中运行,并且仅在合并到主存储库时才允许它运行?

Dav*_*Sag 3 git continuous-integration branch gitlab git-fork

gitlab-ci.yml我有一份喜欢的工作

build and push:
  stage: push
  only:
  - master
  script:
  - gcloud docker -- push $IMAGE_TAG
Run Code Online (Sandbox Code Playgroud)

这个想法是,它应该只在分支是主分支时运行,但我也只希望它在回购是app/而不是主分支时运行dave/

文档

存储库路径可用于仅针对父存储库而不是分支执行作业:

job:
  only:
    - branches@gitlab-org/gitlab-ce
Run Code Online (Sandbox Code Playgroud)

但我无法让它发挥作用。如果我们的 gitlab 服务器是gitlab.myco.io并且应用程序是app/my-project-name我想我可以把

job:
  only:
    - branches@gitlab-myco-io/app/my-project-name/master
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用。

这样做的正确方法是什么?

dlo*_*zan 5

基于privateomega 的答案,由于仅 / except 已被弃用,现代替代方案rules也支持通用主分支名称,如下所示:

job:
  rules:
    - if: '$CI_PROJECT_NAMESPACE == "app" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'
Run Code Online (Sandbox Code Playgroud)

另请参阅https://about.gitlab.com/releases/2020/04/22/gitlab-12-10-released/#auto-devops-and-secure-configuration-templates-are-changing-to-%60rules% 60-而不是-%60仅/除了%60