Выходная передача трубопроводов в правильное место при запуске модульных тестов в трубопроводе CIJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Выходная передача трубопроводов в правильное место при запуске модульных тестов в трубопроводе CI

Сообщение Anonymous »

Я работал над проектом, который отправляет данные поставщику, выполняя банку изнутри нашего кода Kotlin (см. Загрузку файла JAR в тест на модуль Kotlin для получения более подробной информации). Я реализовал то, что, по моему мнению, было решением, используя java.lang.processbuilder. Все мои тесты проходят, когда я запускаю их из своей местной сборки. Когда я пытаюсь запустить те же тесты как часть процесса развертывания в нашем конвейере Gitlab CI, однако, я получаю странные результаты.

Код: Выделить всё

[INFO] -------------------------------------------------------
[INFO]  T E S T S
[INFO] -------------------------------------------------------
Picked up _JAVA_OPTIONS: -Xms256m -Xmx1024m
[INFO] Running edu.bucknell.eventmanagement.int295.Test
ERROR 2025-05-13 15:10:21,841 [main] edu.bucknell.eventmanagement.int295.executeJavaJar: Picked up _JAVA_OPTIONS: -Xms256m -Xmx1024m
Exception in thread "main" java.lang.Exception: Too many args
at Main.main(Main.java:10)
ERROR 2025-05-13 15:10:22,431 [main] edu.bucknell.eventmanagement.int295.executeJavaJar: Picked up _JAVA_OPTIONS: -Xms256m -Xmx1024m
[ERROR] Tests run: 4, Failures: 1, Errors: 0, Skipped: 1, Time elapsed: 2.779 s 
error.left()
})
}
< /code>
и фактический тест: < /p>
@Test
fun `test execute java jar with tmp`()
{
mockContext(300).value().let { context ->
testInt295DependencyProvider(context).let { dp ->
javaClass.classLoader.getResourceAsStream("HelloTest.jar").use { stream ->
assertNotNull(stream)
val inputFile = createTempFile(prefix = "hello", suffix = ".jar").toFile()
Files.copy(stream, inputFile.toPath(), StandardCopyOption.REPLACE_EXISTING)

executeJavaJar(dp,".",
inputFile.absolutePath, listOf("abc")).fold({
fail("test execute java jar failed with error: ${it.message}")
}, {
output->
println(output)
assertNotNull(output)
assertThat(output).isNotEmpty
})
}
}
}
}
< /code>
Я подозреваю, что это как -то связано с перенаправлением трубопровода в процессе. Однако я не могу найти никакой информации о том, как правильно настроить процесс разработчика процесса для маршрутизации вывода в среде CI. Может ли кто -нибудь пролить свет на то, где я ошибаюсь с этим? После добавления дополнительных журналов я определил, что выполняемый класс Java на самом деле не производит никаких ошибок.  Тем не менее, что -то в развертывании CI -это написание текста «_java_options =" ​​-xms256m -xmx1024m " Когда я смотрю на содержимое этого потока для своего теста, в результате я получаю ложный положитель. Если я запускаю этот сценарий Bash: < /p>
#!/bin/sh
# shared gitlab runner host based script
export _JAVA_OPTIONS="-Xms256m -Xmx1024m"

mvn test -Dmule.testingMode=true -Dpackage=edu.bucknell -DfailIfNoTests=false -Dsurefire.skipAfterFailureCount=1
< /code>
Это воспроизводит проблемы, которые я вижу в среде CI. Я могу обойти эту проблему путем вручную убрать эту переменную из среды процесса построения < /p>
       val pb = ProcessBuilder(cmdArgs).directory(File(workingDir))
.redirectError(ProcessBuilder.Redirect.PIPE)
pb.environment().remove("_JAVA_OPTIONS")
pb.start()
Но я не ближе к пониманию основной причины.

Подробнее здесь: https://stackoverflow.com/questions/796 ... i-pipeline
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»