GitLab CI如何在maven多模块项目中触发子模块的管道

Vin*_*nce 8 runner maven git-submodules multi-module gitlab-ci

我有一个多模块Maven项目:

root
    SubmoduleA
        src
        pom.xml      
    SubmoduleB
        src
        pom.xml
    pom.xml
    .gitlab-ci.yml
Run Code Online (Sandbox Code Playgroud)

有人在检查只影响SubmoduleA的代码时,是否有任何方法可以仅在SubmoduleA上触发CI管道?例如,某人在SubmoduleA中进行了更改.一旦他们提交并推送,我想在SubmoduleA上自动运行build-> test-> deploy,因为SubmoduleB没有变化.

有没有办法为回购中的特定子模块或子项目指定触发器和作业?

War*_* P 3

我相信您需要为该子模块创建一个 gitlab 项目,并且该子模块需要自己的 .gitlab-ci.yml。那时它将可以在 gitlab-ci-runner 本身内部构建。

我不是 Maven(或 Java)方面的专家,但我想在较大的项目中,您的子模块可能会成为存储在您自己的内部存储库中的单独的二进制构建库。您在构建中生成和使用 jar,并使用 Maven 本身提供它们。然后,Maven 可以使用其内置的依赖项解析和包获取功能为您下载,并且在大型 Java 项目构建场景中,使用它可能会比使用 git 子模块更好。

我现在在 .Net 世界中使用自定义 nuget feed 执行此操作,结果与您正在做的类似,因为构建发生并且构建服务器的资源不会因源代码包含和再次重新编译这些模块而浪费时间。