Виновником в этом случае оказался компилятор Kotlin.
По умолчанию компилятор Kotlin порождает демона в фоновом режиме, чтобы последующие задания компиляции выполнялись быстрее. Для нетривиальной базы кода Kotlin этот процесс может потребовать значительного объема памяти.
Его присутствие заставляло Gradle достигать предела памяти в контейнере CI, а Linux OOM killer убивал процесс Gradle.
Решение: Скажите компилятору Kotlin не запускать фоновый процесс. Оказывается, это просто вопрос установки переменной окружения:
GRADLE_OPTS=-Dkotlin.compiler.execution.strategy=in-process
При наличии этой переменной компиляция Kotlin выполняется в JVM Gradle, и поэтому ее данные можно собирать, когда Gradle переходит к выполнению тестов.
Было бы также лучше передать параметр команде gradle
, а не устанавливать его в среде.