gitlab合并分支如何防止其.gitlab-ci.yml文件被合并?

jbose2ul  于 2023-05-21  发布在  Git
关注(0)|答案(2)|浏览(403)

由于需求的不同,dev和build分支的.gitlab-ci.yml文件的内容是不同的,我希望当dev合并到build中时,.gitlab-ci.yml文件不会被合并。
可以配置.gitlab-ci.yml文件来执行此操作吗?
如果是,如何配置?

hi3rlvi2

hi3rlvi21#

正如KamilCuk评论的那样,这并不是Gitlab CI的真正想法,并且没有办法在分支中对文件进行更改,然后不将这些更改合并到主分支中。
大多数情况下,特性分支不需要不同的配置 *,所以实际上很好的是有一个单独的文件来指定跨分支的配置。(否则,每次创建新分支时,都必须进行一些样板更改)。
通常你会有这样的东西:

.build:
  stage: build
  script:
    - make

build_main:
  extends: .build
  before_script:
    - ./ci/export_version_number.sh
  only:
    - $CI_DEFAULT_BRANCH

build_feature:
  extends: .build
  variables: 
    ON_FEATURE_BRANCH: true
  only:
    - /^feature\/.*$/

使用此设置,您可以使用extends关键字继承公共设置。(作业名称前面的.使其隐藏)。这比更改分支中的配置项文件功能强大得多,因为您可以使用它来自定义作业,而无需先更改分支。

解决方案

如果你真的想这样做,我想你可以这样做:.gitlab-ci.yml:

include: include/$CI_COMMIT_REF_NAME.yml

然后,您可以将以分支命名的.yml文件放置在include/refs/heads(Gitlab 14.5之前)或include/(Gitlab 14.5之后)中。
这样,更改仍然会合并到主分支,但一旦合并到主分支,它们就不会被使用。然而,一般来说,我仍然建议接受文件是相同的这一事实,并仅使用onlyexceptworkflow关键字进行区分。

um6iljoc

um6iljoc2#

command line:git config --global merge.ours.driver true

project .gitattributes file: paste the command: .gitlab-ci.yml merge=ours

相关问题