我正致力于改进我们当前的构建系统,以实现非常大的.Net项目。把它放在上下文中 - 这个项目有178个Visual Studio Solutions和超过800个csproj文件。Gitlab-CI:只在特定文件夹更新时触发构建
我们目前正在使用TeamCity,但随着团队数量的增加,它变得非常混乱,并且变得非常难以维护。在某个时候,我们迁移到了Gitlab(在我到达之前),并且我正在尝试使用Gitlab-CI获得可行的解决方案。
我已经设法构建,测试和打包,使用Gitlab-CI的每个组件,但它并不漂亮,因为一切都在1 Job中完成。我们现在决定这样做,因为如果我们构建单个组件,管理Gitlab-CI中的所有工件非常困难(并且很慢)。但我会留下的另一个SO问题... ;-)
我今天的问题是如何配置我的.gitlab-ci.yml文件只执行一项工作,如果该特定文件夹的变化?
考虑这个(简体)目录树: . ├── Build ├── Config ├── Core ├── Database ├── Services └── Websites
如果更改在合并到主影响核心或配置,那么整个树应当建立和测试,因为一切都取决于这些组件。 但是,如果对服务进行更改,则不需要构建和测试服务以外的任何其他服务。
同样,也许这太复杂了,如果数据库发生变化,那么只能建立数据库和服务。
你使用专用支路的成分? – Martin
@mgansler我假设你是指git分支?在这个阶段没有 - 所有的东西都坐在一个仓库里。通常情况下,一个团队将分出主要的回购,然后将他们的更改合并回去。 –
是的,我的意思是git分支。如果你要为每个组件引入一个专用分支,你可以使用gitlab-ci的'only':http://docs.gitlab.com/ce/ci/yaml/README.html#only-and-except – Martin