4.3.4. 使用方法


4.3.4.1. 内存要求

所有 Jenkins 代理均使用 JVM 来托管 Jenkins JNLP 代理和运行任何 Java 应用程序,如 javac、Maven 或 Gradle。如需了解有关调整 Jenkins 代理使用的 JVM 的背景资料,请参阅在 OpenShift Container Platform 上调整 OpenJDK

为提高内存效率,如果容器中运行的内存限值为 2GiB,则默认情况下 Jenkins 镜像会动态使用 32 位 JVM。OPENSHIFT_JENKINS_JVM_ARCH 环境变量可覆盖此行为。JVM 选择默认适用于 Jenkins JNLP 代理以及代理容器内的任何其他 Java 进程。

默认情况下,Jenkins JNLP 代理 JVM 会将容器内存限值的 50% 用于其堆。该值可通过 CONTAINER_HEAP_PERCENT 环境变量修改,还可设置上限或整个覆盖。如需了解更多详细信息,请参阅环境变量

在默认情况下,Jenkins 代理容器中执行的任何/所有其他进程(如 shell 脚本或从管道运行的 oc 命令)在不引发 OOM 终止的情况下,可能无法使用剩余的 50% 内存限值。

默认情况下,Jenkins 代理容器中运行的每个进一步的 JVM 进程最多可为其堆使用 25% 的容器内存限值。可能需要对许多构建工作负载进行微调。如需更多信息,请参阅 在 OpenShift Container Platform 上调整 OpenJDK

如需有关指定 Jenkins 代理容器的内存请求和限制的信息,请参阅 Jenkins 文档

4.3.4.1.1. gradle 构建

在 OpenShift 上的 Jenkins 代理中托管 Gradle 构建会带来额外的复杂情况,特别是除了 Jenkins JNLP 代理和 Gradle JVM 外,Gradle 还会生成第三个 JVM 来运行测试(如果指定了这些测试)。

如需了解在 OpenShift Container Platform 上调整 JVM 的后台信息,请参阅 OpenShift Container Platform 上调整 OpenJDK

建议进行以下设置,以便在 OpenShift 上内存受限的 Jenkins 代理中运行 Gradle 构建。可根据需要放松设置。

  • 通过将 org.gradle.daemon=false 添加到 gradle.properties 文件中来确保禁用长期 Gradle 守护进程。
  • 通过确保 gradle.properties 文件中未设置 org.gradle.parallel=true--parallel 未设置为命令行参数来禁用并行构建执行。
  • 要防止 Java 编译超出进程范围,在 build.gradle 文件中设置 java { options.fork = false }
  • 通过确保在 build.gradle 文件中设置 test { maxParallelForks = 1 } 来禁用多个附加测试进程。
  • 根据 OpenShift Container Platform 上调整 OpenJDK 的内容, 使用 GRADLE_OPTS、JAVA_OPTS 或 JAVA_TOOL_OPTIONS 环境变量覆盖 gradle JVM 内存参数。
  • 通过在 build.gradle 中定义 maxHeapSize 和 jvmArgs 设置,或通过 -Dorg.gradle.jvmargs 命令行参数来为任何 Gradle 测试 JVM 设置最大堆大小和 JVM 参数。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.