首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Liferay dxp 7.2 jenkins CI/CD

Liferay dxp 7.2 jenkins CI/CD
EN

Stack Overflow用户
提问于 2019-09-16 03:21:49
回答 1查看 550关注 0票数 0

我正在使用Jenkins进行Liferay7.2部署自动化,我们在GitLab存储库中有Liferay工作区(源代码),我的问题是我不能在GitLab中克隆更改/修改的单个模块(portlet)并在推送事件后构建它,相反,整个工作区都在克隆和构建,这会耗费时间来构建所有模块。我已经在GitLab中实现了post提交钩子,用于git存储库中的任何更改。请建议如何实现这一点。

EN

回答 1

Stack Overflow用户

发布于 2019-09-17 00:02:12

这是一个非常广泛的问题,它将主要取决于您的组织如何使用Jenkins。

有了push事件,你只知道它会发生,Jenkins会加载代码。它不会每次都克隆,除非你构建了一个可以做到这一点的脚本。

在任何情况下,您都将在Jenkins中创建一个工作环境来表示该作业,并为其创建一个独占目录。要利用已构建的模块,您需要为此编写脚本。

比方说,一种想法是利用Gradle (顺便说一句,您可以使用与Jenkins相同的编程语言- Groovy)。您可以从在您的工作区中使用包装器开始,这样可以节省使用Gradle包装器的时间,如果您生活在GitLab项目中,那么Gradle包装器可以带来的所有优势。

使用Gradle,您可以构建缓存来真正加快您的处理速度,但在Jenkins作业中实现这一点有点困难,因为Jenkins作业对每个作业执行都有自己的一组构建工件。但是,您可以使用Gradle检查或选择使用自定义逻辑构建的模块。

假设您开始使用一个名为version.propeties的文件或一个带有诸如“build.gradle”之类指示符的常规快照来标记模块。Gradle构建逻辑可以使用它来选择工作区的子项目(这是一个Gradle项目)。

但最终,您可能会注意到,您的模块组可能在其他项目中,而有些模块几乎从未更新过,您可能会将它们放入自己的工作区。这样做没什么坏处。

另一点是确保您使用的是Gradle的并行构建设置,并且您的硬件可以完成任务。用于构建的Gradle守护进程也可能会有所帮助。

有无限的因素可以帮助你,但是你的环境是告诉你你能做什么的主要指南。例如,您的Jenkins sys管理员可能已经安装了一个全局Gradle守护进程,以及一个全局Gradle环境,在该环境中可以为您的maven依赖项使用一个工件缓存。他们还可以安装一个maven服务器,它也可以作为远程依赖项的缓存……

最后,它太宽泛了,不能告诉你任何具体的建议。但我要告诉你的是:关注Gradle而不是Jenkins。此外,如果你能加快你的依赖解析和下载时间,这在几个项目中会有很大的帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57947506

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档