Gitlab CI -如何仅在特定文件集发生更改时触发构建

btqmn9zl  于 2022-12-25  发布在  Git
关注(0)|答案(5)|浏览(227)

在GitlabCI中,如何仅在特定文件集发生更改时触发构建?
有没有办法在触发构建时包含或排除某些文件?例如:更新README.md, .gitignore文件不应导致触发构建。

ddrv8njm

ddrv8njm1#

更新2

Only/except似乎是一个不稳定的特性,文档建议使用rules:changes

job:
  script:
    - build # replace with your build command
  rules:
    - changes:
      - /*.{java, py} # ... or whatever your file extension is
      - dockerfiles/**/* # all files under folder 'dockerfiles'

更新1

就像评论中提到的Gajus一样,现在已经可以了!

不,这不可能--现在不行!
我认为这就是您要寻找的问题:https://gitlab.com/gitlab-org/gitlab-ce/issues/19232-这是一个评级非常高的问题(超过100个大拇指)。
4个月前,里程碑已更改为 * 下一个3-6个月 *。(https://gitlab.com/gitlab-org/gitlab-ce/issues/19232#note_31943850)希望我们能很快看到此功能。

2w2cym1i

2w2cym1i2#

Update: This is now possible as of 11.4, see https://docs.gitlab.com/ee/ci/yaml/#onlychangesexceptchanges
原文:
目前还没有任何方法可以根据编辑过的文件有条件地触发GitLab CI中的构建。
我自己以前也考虑过这个特性,我认为它对许多不同的用例都非常有用。
我能找到的与此最接近的问题是https://gitlab.com/gitlab-org/gitlab-ce/issues/23010
不管怎样,回答你的问题:
您现在真的不能这样做--甚至手动也不行--因为CI没有合并请求的概念,所以无法确定合并请求是否更改了文件。
"理解"合并请求是什么的管道应该在不久的某个时候添加。

tkqqtvp1

tkqqtvp13#

当与only规则组合时,此规则对我有效

build-web-dev:
  stage: build
  script:
    - build.sh
  only:
    - develop
    - changes
      web/*
      Dockerfile.web
2sbarzqh

2sbarzqh4#

该功能从版本11.4开始提供。
参见文档。

ma8fv8wu

ma8fv8wu5#

我在网上浏览的时候没有任何解决方案,然后我回到gitlab官方文档,尝试他们写的东西:https://docs.gitlab.com/15.7/ee/ci/jobs/job_control.html#onlychanges--exceptchanges-examples
在我的情况下,这是一个有效的解决方案,神奇之处在于:except规则到所有相关作业中,如下所示:

build:
  script: npm run build
  except:
    changes:
      - "*.md"

更新docu(.md)不会再触发整个管道。
干杯,

相关问题