JenkinsX - Сбой сборки из-за пространства кучи Java - PullRequest
0 голосов
/ 17 апреля 2019

Я работаю над созданием конвейера CI / CD для приложения Spring Boot на GKE с использованием JenkinsX. Как только я помещаю код в основную ветку, сборка запускается, но сборка завершается неудачно из-за недостатка кучи Java.

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-war-plugin:3.2.2:war (default-war) on project location-finder-api: Error assembling WAR: Problem creating war: Execution exception: Java heap space -> [Help 1]

org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-war-plugin:3.2.2:war (default-war) on project location-finder-api: Error assembling WAR: Problem creating war: Execution exception
Caused by: java.lang.OutOfMemoryError: Java heap space

    at org.codehaus.plexus.archiver.zip.ByteArrayOutputStream.needNewBuffer (ByteArrayOutputStream.java:153)

    at org.codehaus.plexus.archiver.zip.ByteArrayOutputStream.write (ByteArrayOutputStream.java:192)

Чтобы решить, я попытался установить аргумент JVM в Docekrfile как

CMD ["java", "-Xmx1024m","-jar", "app.jar"]

Но это не сработало. Это то, что я вижу, когда начинается сборка

+ mvn -e clean deploy -Pprod

Picked up _JAVA_OPTIONS: -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -Dsun.zip.disableMemoryMapping=true -XX:+UseParallelGC -XX:MinHeapFreeRatio=5 -XX:MaxHeapFreeRatio=10 -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -Xms10m -Xmx192m

OpenJDK 64-Bit Server VM warning: If the number of processors is expected to increase from one, then you should configure the number of parallel GC threads appropriately using -XX:ParallelGCThreads=N

Можно ли как-нибудь настроить эту кучу самостоятельно?

1 Ответ

1 голос
/ 17 апреля 2019

похоже, что у maven недостаточно памяти, поэтому вам нужно больше памяти в модуле сборки (а не в файле Docker для вашего приложения).

в качестве быстрого теста вы можете отредактировать шаблон модуля в пользовательском интерфейсе Jenkins: jx console, затем Manage Jenkins -> Configure System, затем найти шаблон модуля jenkins-maven в интерфейсе пользователя и отредактировать переменную среды _JAVA_OPTIONS из этого значения: https://github.com/jenkins-x/jenkins-x-platform/blob/master/jenkins-x-platform/values.yaml#L907 - попробуйте изменить -Xmx512m на что-то большее, например -Xmx912m

Как только вы нашли значение, которое подходит для ваших проектов, вы можете сделать изменение постоянным при перезапуске Jenkins, добавив его в myvalues.yaml - что-то вроде этого ...

# myvalues.yaml
jenkins:
  Agent:
    PodTemplates:
      Maven:
        Name: maven
        Label: jenkins-maven
        EnvVars:
          _JAVA_OPTIONS: '-XX:+UnlockExperimentalVMOptions -Dsun.zip.disableMemoryMapping=true -XX:+UseParallelGC -XX:MinHeapFreeRatio=5 -XX:MaxHeapFreeRatio=10 -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -Xms10m -Xmx912m'

см. Документы по созданию / настройке сборщиков

...