jenkins - 我可以在 Jenkins CI 上加快 Gradle 守护进程的启动速度吗?
问题描述
每次我将我的 gradle 构建推送到 Jenkins 时,它都会在这一步上花费大量时间:
Starting a Gradle Daemon (subsequent builds will be faster)
我的 Jenkinsfile 的相关部分如下所示:
stage('Build') {
steps {
withGradle() {
sh 'chmod +x gradlew'
sh './gradlew build jar'
}
}
}
我假设 withGradle() 会尝试在 Jenkins 的后台持续运行一个 gradle 守护程序以避免这种事情,但在这一点上,我并不完全确定它会做什么——它的文档非常模糊。
如何使用此系统缩短构建时间?
解决方案
withGradle
由 Jenkins 的Gradle 插件贡献,并贡献了控制台输出突出显示和构建扫描 URL 捕获(在 Jenkins UI 中显示构建扫描 URL)。它当然不会对 Gradle 守护进程做任何事情。您不需要withGradle
在 Jenkins 中运行 Gradle 构建,当然这取决于您是否使用构建扫描。只做
stage('Build') {
steps {
sh 'chmod +x gradlew'
sh './gradlew build jar'
}
}
很好。
Gradle 守护程序在闲置 3 小时后自行停止(常见问题解答)。如果构建每天只运行一次,那么守护进程肯定会死掉。这通常是守护程序不存在并需要启动的原因。
如果正在运行的守护进程被分类为不兼容(构建环境,例如堆内存设置,已更改),Gradle 也可能决定启动一个新的守护进程实例。根据我的信息,这在构建输出中明确突出显示。
关于缓慢的守护进程启动性能,通常建议在最新的 Gradle 和 Java 版本上运行构建。
最后一个提示。sh 'chmod +x gradlew'
如果您使用 Git 作为版本控制系统,您可以通过让 Git 通过update-index设置可执行标志来摆脱:
git update-index --chmod=+x gradlew
推荐阅读
- python - 将任何其他列附加到前三列
- python - 使用 python 进行多处理:保存“池化”函数的对象
- c# - C# WPF 无限期存储连接凭据以进行可能的重新连接
- c# - 什么在 c# MSTest 单元测试中调用 Dispose() 方法?
- excel - 通过 VBA 将 SharePoint 列表导入 Excel
- angular - 为什么我的 Angular“英雄之旅教程”没有渲染任何东西
? - python - Haar Cascade:识别圆形和椭圆
- amazon-web-services - 将处理后的消息重新发送到 Amazon SQS 队列
- java - FileWriter 和 BufferedWriter 中的缓冲区
- temenos-quantum - Kony - Build.xml 用于生成 .apk 文件