Jenkins 使用 gradle 子项目构建
Posted
技术标签:
【中文标题】Jenkins 使用 gradle 子项目构建【英文标题】:Jenkins builds with gradle subprojects 【发布时间】:2018-07-09 19:29:27 【问题描述】:我是否可以在 gradle 中创建两个模块项目,并为每个模块自己触发构建?
Root project 'Example'
Jenkinsfile
\--- Project ':SubProject'
Jenkinsfile
我希望 jenkins 仅在已更改的模块中触发构建。
例如:
如果我的SubProject
改变了,那么只有SubProject
会执行它自己的Jenkinsfile
。
这个选项我找了很久...
Build multiproject Gradle on Jenkins Using Gradle & Jenkins on large multi projects正如您在其他问题中看到的那样,没有任何简单的方法可以实现这一目标。
有没有Jenkins pipeline
或plugin
可以解决这个问题?
【问题讨论】:
如果您想在将代码推送到“子项目”后触发它们并且您只有一个 repo,请查看 git submodules git-scm.com/docs/git-submodule 【参考方案1】: 仅从给定子项目调用 gradle 任务相对容易: 构建示例:./gradlew :build
构建子项目:./gradlew :SubProject:build
Gradle 将只运行这些调用定义的任务图。
在 Jenkins 中基于不同的 Jenkinsfile 设置两个不同的作业应该相对容易,并且每个作业都可以具有上面定义的自定义调用。
但是,仅触发一个项目很可能是一件棘手的事情,因为它们很可能位于同一个源代码控制位置。
也许更简单的解决方法是让它们解耦,使用svn:externals
或 Git 子模块。
【讨论】:
【参考方案2】:使用excludedRegions
排除会触发构建的文件夹/文件。
https://jenkins.io/doc/pipeline/steps/workflow-scm-step/
我不确定 JenkinsFile 是否支持...
【讨论】:
以上是关于Jenkins 使用 gradle 子项目构建的主要内容,如果未能解决你的问题,请参考以下文章
使用 AWS CodePipeline 在 Jenkins 中构建多个 Gradle 项目
Jenkins 和 gradle - 使用最新版本的 CI 依赖项构建项目,用于生产的特定版本
Gradle Enterprise Gradle 插件 (com.gradle.enterprise) 在尝试构建我的项目时在 jenkins 中未发现错误
如何用jenkins+gradle一次性构建多个java工程