Liferay DXP 7.2詹金斯CI / CD

时间:2019-09-15 19:21:48

标签: gradle liferay liferay-7 liferay-7.2

我正在使用Jenkins进行Liferay 7.2部署自动化,我们在GitLab存储库中拥有Liferay工作区(源代码),我的问题是我无法仅克隆更改/修改的单个模块(portlet)并在之后构建它GitLab中的push事件,相反,整个工作区都被克隆并构建,这会花费时间来构建所有模块。我已经在GitLab中实现了git仓库中的任何更改的post commit钩子。请建议如何实施。

1 个答案:

答案 0 :(得分:1)

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

使用push事件,您仅知道它会发生,Jenkins将加载代码。除非您构建执行此操作的脚本,否则它不会每次都克隆。

无论如何,您将在Jenkins中创建一个工作环境来表示该作业,并为其提供一个专用目录。要利用已经构建的模块,您需要为此编写代码。

比方说,一个想法是利用Gradle(顺便说一句,您可以使用与Jenkins-Groovy相同的编程语言)。您可以从在工作区中使用包装器开始,这样可以节省时间,以使Gradle包装器位于GitLab项目内部时可以发挥所有优势。

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

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

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

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

有很多因素可能会有所帮助,但是您的环境是您可以做什么的主要指南。例如,您的Jenkins系统管理员可能已经安装了全局Gradle守护程序和全局Gradle环境,在该环境中,工件缓存可以为您的Maven依赖项而存在。他们还可以安装一台maven服务器,该服务器还充当远程依赖项的缓存...

最后,它太宽泛,无法告诉您任何具体建议。但是我要留给您的是:比詹金斯更关注Gradle。另外,如果您可以加快依赖关系解析和下载时间的速度,那么在几个项目中也有很大帮助。