在 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'
我在 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
基于 rules
,也支持通用的主要分支名称,类似于:
job:
rules:
- if: '$CI_PROJECT_NAMESPACE == "app" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH'