2016-05-10 4 views
0

Я использую Jenkins и пытаюсь создать сборку Multi-Configuration. Мы используем Jenkins для запуска и записи наших программных сборок и использовали его для запуска нашего внутреннего инструмента автоматического тестирования.Выполнение нескольких узлов/платформ с Jenkins

При обновлении до новейшего Jenkins 2.2 у меня также есть необходимость запуска автоматических тестов для разных версий ОС в будущем. Раньше я использовал простые проекты Free-style для этого и просто запустил все задания.

Я пытаюсь использовать построение матрицы, чтобы сделать это автоматически. У меня есть несколько версий нашего программного обеспечения и несколько платформ ОС для проверки.

У меня есть 5 узлов компьютеров в моей смеси с узлами каждый из которых имеет определенные ярлыки, которые охватывают ОС, версию программного обеспечения для запуска, и т.д. ...
Master - Дженкинс Node - POS Ready 7 OS Node - Windows 10 Узел - Windows 7 Также узлы Linux, но на данный момент Windows кажется моей большой проблемой. Node - OpenSuSE 12,3 Node - Ubuntu 16,04

Когда я запускаю тесты, есть две различные конфигурации мне нужно запустить на каждом узле, которые разные версии нашего автоматизированного тестирования (по аналогии с различными браузерами, и т.д .. .) инструмент плюс версия программного обеспечения для платформы.

Когда я запускаю задание, я хочу запустить 2 теста на каждом узле (который охватывает каждую ОС) для моих различных параметров тестирования (Config1, Config2).

В соответствии с Матрицей конфигурации задания, ведомыми устройствами, я выбрал три компьютера узла Windows. Затем у меня есть определяемая пользователем ось (config_type), определенная со списком значений (Config1 Config2). Когда я просматриваю задание, у него есть мои 6 заданий (3 узла, каждый с Config1 и Config2).

Мой шаг сборки - это условный этап тестирования конфигурации Conditional Step, который затем вызовет наш командный файл для обработки. В проекте Free-style это было бы просто RunTest.bat Config1. Configuration 2 имеет аналогичную настройку.

Matrix looks Correct

Это где я теперь потерял. Пока работа выглядит готовой, я не могу запустить задание. Когда я проверяю выполнение задания, опция

Build with Parameters.

Я не могу запустить задание непосредственно с помощью этой кнопки или значка сборки в списке заданий.

Оба варианта принести мне кнопку сборки на работе, с

This build requires parameters

текстом. Когда я запускаю эту работу, я получаю ошибку:

A problem occurred while processing the request. Please check our bug tracker to see if a similar problem has already been reported. If it is already reported, please vote and put a comment on it to let us gauge the impact of the problem. If you think this is a new issue, please file a new issue. When you file an issue, make sure to add the entire stack trace, along with the version of Jenkins and relevant plugins. The users list might be also useful in understanding what has happened. 

Stack trace 

javax.servlet.ServletException: java.lang.ClassCastException: net.sf.json.JSONNull cannot be cast to net.sf.json.JSONObject 
    at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:796) 
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876) 
    at org.kohsuke.stapler.MetaClass$5.doDispatch(MetaClass.java:233) 
    at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58) 
    at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746) 
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:876) 
    at org.kohsuke.stapler.Stapler.invoke(Stapler.java:649) 
    at org.kohsuke.stapler.Stapler.service(Stapler.java:238) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) 
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:812) 
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1669) 
    at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:135) 
    at hudson.plugins.greenballs.GreenBallFilter.doFilter(GreenBallFilter.java:59) 
    at hudson.util.PluginServletFilter$1.doFilter(PluginServletFilter.java:132) 
    at hudson.util.PluginServletFilter.doFilter(PluginServletFilter.java:126) 
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) 
    at hudson.security.csrf.CrumbFilter.doFilter(CrumbFilter.java:80) 
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) 
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:84) 
    at hudson.security.UnwrapSecurityExceptionFilter.doFilter(UnwrapSecurityExceptionFilter.java:51) 
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) 
    at jenkins.security.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:117) 
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) 
    at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125) 
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) 
    at org.acegisecurity.ui.rememberme.RememberMeProcessingFilter.doFilter(RememberMeProcessingFilter.java:142) 
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) 
    at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271) 
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) 
    at jenkins.security.BasicHeaderProcessor.doFilter(BasicHeaderProcessor.java:93) 
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) 
    at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249) 
    at hudson.security.HttpSessionContextIntegrationFilter2.doFilter(HttpSessionContextIntegrationFilter2.java:67) 
    at hudson.security.ChainedServletFilter$1.doFilter(ChainedServletFilter.java:87) 
    at hudson.security.ChainedServletFilter.doFilter(ChainedServletFilter.java:76) 
    at hudson.security.HudsonFilter.doFilter(HudsonFilter.java:171) 
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) 
    at org.kohsuke.stapler.compression.CompressionFilter.doFilter(CompressionFilter.java:49) 
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) 
    at hudson.util.CharacterEncodingFilter.doFilter(CharacterEncodingFilter.java:81) 
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) 
    at org.kohsuke.stapler.DiagnosticThreadNameFilter.doFilter(DiagnosticThreadNameFilter.java:30) 
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1652) 
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:585) 
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143) 
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:553) 
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:223) 
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1127) 
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:515) 
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185) 
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1061) 
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) 
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:97) 
    at org.eclipse.jetty.server.Server.handle(Server.java:499) 
    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:311) 
    at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:257) 
    at org.eclipse.jetty.io.AbstractConnection$2.run(AbstractConnection.java:544) 
    at winstone.BoundedExecutorService$1.run(BoundedExecutorService.java:77) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 
Caused by: java.lang.ClassCastException: net.sf.json.JSONNull cannot be cast to net.sf.json.JSONObject 
    at hudson.model.ParametersDefinitionProperty._doBuild(ParametersDefinitionProperty.java:148) 
    at jenkins.model.ParameterizedJobMixIn.doBuild(ParameterizedJobMixIn.java:195) 
    at hudson.model.AbstractProject.doBuild(AbstractProject.java:1745) 
    at hudson.model.AbstractProject.doBuild(AbstractProject.java:1751) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at org.kohsuke.stapler.Function$InstanceFunction.invoke(Function.java:324) 
    at org.kohsuke.stapler.Function.bindAndInvoke(Function.java:167) 
    at org.kohsuke.stapler.Function.bindAndInvokeAndServeResponse(Function.java:100) 
    at org.kohsuke.stapler.MetaClass$1.doDispatch(MetaClass.java:124) 
    at org.kohsuke.stapler.NameBasedDispatcher.dispatch(NameBasedDispatcher.java:58) 
    at org.kohsuke.stapler.Stapler.tryInvoke(Stapler.java:746) 
    ... 60 more 

ответ

0

Собственно, конфигурация для этой работы была установлена ​​правильно и работает правильно, я настроенную работу в качестве Parameterized сборки, что и вызывает проблемы с работа не выполняется. Удаление параметра параметрированной сборки изменило мою проблему и позволило заданию работать корректно.