Skip to content

Conversation

@Kyrales
Copy link
Contributor

@Kyrales Kyrales commented Oct 19, 2025

Не учтены настройки vrunnerSettings для bdd этапа, а они нужны для подготовки базы с нужными расширениями. Если ничего не указывать то отрабатывает корректно, но когда указываем bdd возникает ошибка:

groovy.lang.MissingPropertyException: No such property: vrunnerSettings for class: ru.pulsar.jenkins.library.configuration.BddOptions

image

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Oct 19, 2025

Прохождение

Добавлено новое поле vrunnerSettings в класс BddOptions для хранения пути к файлу конфигурации vanessa-runner. Поле содержит значение по умолчанию "./tools/vrunner.json" и дополнено аннотацией документации. Метод toString() обновлён для включения нового поля в строковое представление.

Изменения

Когорта / Файлы Описание изменений
Расширение конфигурации BDD
src/ru/pulsar/jenkins/library/configuration/BddOptions.groovy
Добавлено поле vrunnerSettings: String с значением по умолчанию "./tools/vrunner.json" и аннотацией @JsonPropertyDescription. Обновлён метод toString() для отражения нового поля.

Оценка сложности кода

🎯 1 (Тривиально) | ⏱️ ~3 минуты

Изменения состоят из простого добавления одного поля с аннотацией и минорного обновления метода toString(). Это типичное, повторяемое и низкорисковое изменение конфигурационного класса.

Стихотворение

🐰 В конфиге новенький путь расцветает,
Куда vrunner.json нас приведёт,
Строка в toString() жизнь упрощает,
Конфигурация дальше живёт! ✨

Pre-merge checks and finishing touches

✅ Passed checks (3 passed)
Check name Status Explanation
Title Check ✅ Passed Название PR "Fix/Ошибка при указании в extension-stages "bdd"" точно отражает основное назначение изменений - исправление ошибки, возникающей при использовании BDD этапа. Название специфично и указывает на область проблемы (extension-stages и "bdd"), хотя сфокусировано на проблеме, а не на техническом решении. Изменения в коде действительно добавляют отсутствовавшее поле vrunnerSettings в класс BddOptions, что напрямую решает описанную в названии проблему MissingPropertyException.
Description Check ✅ Passed Описание PR полностью связано с изменениями в коде и четко объясняет проблему, которую исправляет этот pull request. Автор описывает конкретную ошибку (MissingPropertyException для vrunnerSettings в классе BddOptions), объясняет, почему эта настройка необходима (для подготовки базы данных с нужными расширениями), и предоставляет скриншот ошибки. Описание достаточно информативно и непосредственно соответствует добавлению нового поля vrunnerSettings в класс BddOptions.
Docstring Coverage ✅ Passed No functions found in the changes. Docstring coverage check skipped.
✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🧹 Nitpick comments (1)
src/ru/pulsar/jenkins/library/configuration/BddOptions.groovy (1)

32-33: Добавьте разделитель между полями в toString().

В методе toString() отсутствует разделитель между полями vrunnerSettings и vrunnerSteps, что затрудняет чтение вывода. Текущий формат создаст строку вида vrunnerSettings='...'vrunnerSteps=... без пробела или запятой.

Примените этот diff для улучшения читаемости:

     return "BddOptions{" +
-        "vrunnerSettings='" + vrunnerSettings + '\'' +
+        "vrunnerSettings='" + vrunnerSettings + '\'' + ", " +
         "vrunnerSteps=" + vrunnerSteps +
📜 Review details

Configuration used: CodeRabbit UI

Review profile: CHILL

Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between a3e61e6 and 596c392.

⛔ Files ignored due to path filters (2)
  • resources/globalConfiguration.json is excluded by !**/*.json
  • resources/schema.json is excluded by !**/*.json
📒 Files selected for processing (1)
  • src/ru/pulsar/jenkins/library/configuration/BddOptions.groovy (2 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: build
🔇 Additional comments (1)
src/ru/pulsar/jenkins/library/configuration/BddOptions.groovy (1)

10-13: Поле vrunnerSettings должным образом интегрировано. Проверка пройдена.

Проверка подтверждает, что поле vrunnerSettings активно используется в коде:

  • 7+ файлов этапов читают options.vrunnerSettings и передают его в команды vrunner с флагом --settings
  • Во всех местах использования правильно проверяется наличие файла перед применением
  • toString() корректно включает новое поле

Дублирование пути "./tools/vrunner.json" между vrunnerSettings и vrunnerSteps является намеренным и приемлемым: vrunnerSteps — это статический массив примеров команд (документация), а vrunnerSettings — это настраиваемый параметр конфигурации, используемый всеми этапами пайплайна. Поле успешно устраняет MissingPropertyException.

@nixel2007
Copy link
Member

@Kyrales дай, пожалуйста, полный стак-трейс ошибки

@Kyrales
Copy link
Contributor Author

Kyrales commented Oct 25, 2025

@Kyrales дай, пожалуйста, полный стак-трейс ошибки

@nixel2007 лови:

Found unhandled hudson.remoting.ProxyException exception:
groovy.lang.MissingPropertyException: No such property: vrunnerSettings for class: ru.pulsar.jenkins.library.configuration.BddOptions
org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:66)
org.codehaus.groovy.runtime.ScriptBytecodeAdapter.getProperty(ScriptBytecodeAdapter.java:471)
PluginClassLoader for workflow-cps//com.cloudbees.groovy.cps.sandbox.DefaultInvoker.getProperty(DefaultInvoker.java:39)
PluginClassLoader for workflow-cps//org.jenkinsci.plugins.workflow.cps.LoggingInvoker.getProperty(LoggingInvoker.java:134)
PluginClassLoader for workflow-cps//com.cloudbees.groovy.cps.impl.PropertyAccessBlock.rawGet(PropertyAccessBlock.java:20)
ru.pulsar.jenkins.library.steps.LoadExtensions.getVrunnerSettingsForStage(LoadExtensions.groovy:107)
ru.pulsar.jenkins.library.steps.LoadExtensions.loadExtension(LoadExtensions.groovy:77)
ru.pulsar.jenkins.library.steps.LoadExtensions.run(LoadExtensions.groovy:58)
com.cloudbees.groovy.cps.CpsDefaultGroovyMethods.each(CpsDefaultGroovyMethods:2125)
com.cloudbees.groovy.cps.CpsDefaultGroovyMethods.each(CpsDefaultGroovyMethods:1980)
ru.pulsar.jenkins.library.steps.LoadExtensions.run(LoadExtensions.groovy:56)
loadExtensions.call(loadExtensions.groovy:9)
pipeline1C.call(pipeline1C.groovy:230)
cps.transform(Native Method)
PluginClassLoader for workflow-cps//com.cloudbees.groovy.cps.impl.PropertyishBlock$ContinuationImpl.get(PropertyishBlock.java:73)
PluginClassLoader for workflow-cps//com.cloudbees.groovy.cps.LValueBlock$GetAdapter.receive(LValueBlock.java:30)
PluginClassLoader for workflow-cps//com.cloudbees.groovy.cps.impl.PropertyishBlock$ContinuationImpl.fixName(PropertyishBlock.java:65)
jdk.internal.reflect.GeneratedMethodAccessor407.invoke(Unknown Source)
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.base/java.lang.reflect.Method.invoke(Method.java:569)
PluginClassLoader for workflow-cps//com.cloudbees.groovy.cps.impl.ContinuationPtr$ContinuationImpl.receive(ContinuationPtr.java:72)
PluginClassLoader for workflow-cps//com.cloudbees.groovy.cps.impl.ConstantBlock.eval(ConstantBlock.java:21)
PluginClassLoader for workflow-cps//com.cloudbees.groovy.cps.Next.step(Next.java:83)
PluginClassLoader for workflow-cps//com.cloudbees.groovy.cps.Continuable.run0(Continuable.java:147)
PluginClassLoader for workflow-cps//org.jenkinsci.plugins.workflow.cps.SandboxContinuable.access$001(SandboxContinuable.java:17)
PluginClassLoader for workflow-cps//org.jenkinsci.plugins.workflow.cps.SandboxContinuable.run0(SandboxContinuable.java:49)
PluginClassLoader for workflow-cps//org.jenkinsci.plugins.workflow.cps.CpsThread.runNextChunk(CpsThread.java:181)
PluginClassLoader for workflow-cps//org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.run(CpsThreadGroup.java:443)
PluginClassLoader for workflow-cps//org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:351)
PluginClassLoader for workflow-cps//org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:299)
PluginClassLoader for workflow-cps//org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService.lambda$wrap$4(CpsVmExecutorService.java:140)
java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
hudson.remoting.SingleLaneExecutorService$1.run(SingleLaneExecutorService.java:139)
jenkins.util.ContextResettingExecutorService$1.run(ContextResettingExecutorService.java:28)
jenkins.security.ImpersonatingExecutorService$1.run(ImpersonatingExecutorService.java:68)
jenkins.util.ErrorLoggingExecutorService.lambda$wrap$0(ErrorLoggingExecutorService.java:51)
java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539)
java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
PluginClassLoader for workflow-cps//org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService$1.call(CpsVmExecutorService.java:53)
PluginClassLoader for workflow-cps//org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService$1.call(CpsVmExecutorService.java:50)
org.codehaus.groovy.runtime.GroovyCategorySupport$ThreadCategoryInfo.use(GroovyCategorySupport.java:136)
org.codehaus.groovy.runtime.GroovyCategorySupport.use(GroovyCategorySupport.java:275)
PluginClassLoader for workflow-cps//org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService.lambda$categoryThreadFactory$0(CpsVmExecutorService.java:50)
java.base/java.lang.Thread.run(Thread.java:840)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants