在 GitLab 的 CI/CD 系统中,如果作业在我的 fork 中,我如何阻止它 运行ning 并且只允许它 运行 如果它合并到主仓库?

In GitLab's CI/CD system how do I prevent a job from running if it's in my fork and only allow it to run if its a merge to the main repo?

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

build and push:
  stage: push
  only:
  - master
  script:
  - gcloud docker -- push $IMAGE_TAG

想法是如果分支是 master,它应该只 运行,但我也只希望它 运行 如果 repo 是 app/ 而不是 dave/

The docs

The repository path can be used to have jobs executed only for the parent repository and not forks:

job:
  only:
    - branches@gitlab-org/gitlab-ce

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

job:
  only:
    - branches@gitlab-myco-io/app/my-project-name/master

但这似乎不起作用。

正确的做法是什么?

尝试将其更改为以下配置。您不需要它 运行 所有分支(只有主分支)和原始回购。

job:
  only:
    - master@app/my-project-name

基于 , since only / except are being deprecated 的现代替代方案 rules,也支持通用的主要分支名称,类似于:

job:
  rules:
    - if: '$CI_PROJECT_NAMESPACE == "app" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'

另见 https://about.gitlab.com/releases/2020/04/22/gitlab-12-10-released/#auto-devops-and-secure-configuration-templates-are-changing-to-%60rules%60-instead-of-%60only/except%60