GitLab CI не работает из-за maven-surefire-plugin с крахом виртуальной машины - PullRequest
0 голосов
/ 01 ноября 2018

У нас есть около 10 различных приложений, которые являются проектами Spring Boot с Groovy.

Все наши проекты построены правильно на всех рабочих станциях разработчиков, и они работали правильно до вчерашнего дня, однако внезапно все они перестали работать сегодня только в наших конвейерах GitLab CI с ошибкой ниже:

[INFO] Tests run: 0, Failures: 0, Errors: 0, Skipped: 0
[INFO] 
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:37 min
[INFO] Finished at: 2018-10-31T17:49:11Z
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.21.0:test (default-test) on project ctg-oms-component: There are test failures.
[ERROR] 
[ERROR] Please refer to /builds/ctg-integrations/ctg-oms-component/target/surefire-reports for the individual test results.
[ERROR] Please refer to dump files (if any exist) [date]-jvmRun[N].dump, [date].dumpstream and [date]-jvmRun[N].dumpstream.
[ERROR] ExecutionException The forked VM terminated without properly saying goodbye. VM crash or System.exit called?

Я вытащил тот же образ докера, который использует наш конвейер GitLab CI, протестировал сборку проекта и все работает правильно. Однако ошибка возникает только в GitLab CI.

После того, как расследование похоже, что верный огонь создает форк, который приводит к сбою док-станции GitLab CI. Чтобы исправить это, я добавил ниже явную конфигурацию, чтобы избежать разветвленной виртуальной машины, и это избавило от вышеуказанной ошибки.

<!-- Needed only for GitLab CI -->
<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <configuration>
        <forkCount>0</forkCount>
    </configuration>
</plugin>

Знаете ли вы, почему это происходит? Есть ли другой способ исправить GitLab CI, чтобы избежать этой проблемы? Мне не очень нравится этот обходной путь, так как это просто способ избежать взрыва GitLab CI, но я не знаю, как Docker обрабатывается за кулисами в Gitlab.

Ответы [ 4 ]

0 голосов
/ 09 ноября 2018

Проблемы связаны с последними образами Maven Docker.

Существует открытая проблема github, где люди сообщают о той же самой проблеме: https://github.com/carlossg/docker-maven/issues/90

После расследования я мог разобраться с проблемой, используя версию alpine, которая избавила меня от добавления обходного пути maven-surefire-plugin. Важно отметить, что использование верного обходного пути приносит еще одну проблему, такую ​​как плагины, такие как jacoco, не запускаются, так как им требуется ветвь виртуальной машины.

Итак, эти изображения работают без проблем (безошибочного обходного пути не требуется):

  • Maven: 3.3.9-JDK-8
  • Maven: 3.5.3-JDK-8
  • Maven: 3,5,4-JDK-8-Alpine
  • Maven: 3.6.0-JDK-8-альпийский

Однако, если мы используем не альпийскую версию, проблема не исчезнет.

0 голосов
/ 03 ноября 2018

У меня была такая же проблема, когда я использовал maven: 3-jdk-8 в моем gitlab-ci.yml для сборки maven. Я изменил его на maven: 3-jdk-9, и проблема исчезла.

0 голосов
/ 09 ноября 2018

У меня была такая же проблема

Здесь вы можете найти проблему, которую я создал для gitlab, с подробными объяснениями: https://gitlab.com/gitlab-org/gitlab-ce/issues/53734

Также я нашел «обходной путь». maven:3.5.3-jdk-8 как образ докера, на котором выполняется сборка. Или свойство forkCount=0 в maven-surefire-plugin.

Но это беспокоит. Как вдруг сборки начинают терпеть неудачу? Не знаю, и я не думаю, что у меня есть опыт, необходимый для решения этой проблемы.

До тех пор, может быть, это поможет вам

0 голосов
/ 01 ноября 2018

Попробуйте добавить <useSystemClassLoader>false</useSystemClassLoader> в конфигурацию вашего подключаемого модуля maven-surefire.

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <configuration>
        <useSystemClassLoader>false</useSystemClassLoader>
    </configuration>
</plugin>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...