Redmine Plugin not working in Teamcity 9.1?
I changed my version from 9.0.3 to 9.1, the Redmine plugin is listed in the plugin list but i cant find it in the issue tracker list. How to configure or integrate Redmine properly in a project?
Please sign in to leave a comment.
Konstantin, due to api changes, existing Redmine plugin is not compatible with TeamCity 9.1.
We have made a 9.1 compatible fork: https://github.com/orybak/TeamCityRedmine
The stable build of 9.1 compatible plugin can be found here
I have the same problem with version 10.0: the Redmine plugin is listed in the plugin list but I can't find it in the issue tracker list. Fix it please.
Sergey,
what version of TeamCity do you have and what version of RedMine plugin do you see loaded on plugins list page?
Oleg,
I have TeamCity version 10.0 and I used this plugin and its version is "@Version@"
Sergey, please remove your redmine plugin and download the recommended version from teamcity.jetbrains.com (file redmine.zip from this page https://teamcity.jetbrains.com/viewLog.html?buildId=715699&buildTypeId=TeamCityRedminePlugin_Fork_BuildAgainstTeamCity91x&tab=artifacts ) and put it in the plugins folder under your TeamCity data directory.
I have checked, that the plugin works correctly under 9.1.x and 10.0.x versions
Thanks a lot, it works.
It looks like this plugin does not work with TeamCity 2018.1. I`ve got this error:
Error: Argument for @NotNull parameter 'element' of jetbrains/buildServer/issueTracker/AbstractIssueFetcher.getAttribute must not be null
Do you have any ideas?
Aleksandrus, do you have an example (xml from Redmine) of the issue that causes the exception?
I have made a build of redmine plugin that works with 2018.1. You can download it from our public server https://teamcity.jetbrains.com/viewLog.html?buildTypeId=TeamCityRedminePlugin_BuildForkAgainstTeamCity20181&buildId=lastPinned
I`m sorry for delay, I was on vacation.
Thank you, Oleg, but with new version of plugin I`ve got different error:
To view xml of the issue go to http://<YOUR_REDMINE_SERVER>/issues/ISSUE_ID.xml
<?xml version="1.0" encoding="UTF-8"?>
<issue>
<id>123</id>
<project id="1" name="test"/>
<tracker id="1" name="Задача"/>
<status id="10" name="Ждет анализа"/>
<priority id="2" name="Нормальный"/>
<author id="2155" name="Игорь"/>
<assigned_to id="2059" name="Сергей"/>
<parent id="11771"/>
<subject>Тестирование</subject>
<description/>
<start_date>2018-09-11</start_date>
<due_date/>
<done_ratio>0</done_ratio>
<is_private>false</is_private>
<estimated_hours/>
<total_estimated_hours>0.0</total_estimated_hours>
<custom_fields type="array">
<custom_field id="1" name="Разработчик">
<value/>
</custom_field>
<custom_field id="2" name="Аналитик">
<value/>
</custom_field>
<custom_field id="3" name="Тестировщик">
<value>37</value>
</custom_field>
<custom_field id="4" name="Номер задачи в Devprom">
<value/>
</custom_field>
<custom_field id="5" name="Номер задачи в HelpDesk">
<value/>
</custom_field>
<custom_field id="6" name="Обновил">
<value>2155</value>
</custom_field>
<custom_field id="7" name="Порядковый номер">
<value/>
</custom_field>
<custom_field id="8" name="VersionPosition">
<value>9999</value>
</custom_field>
</custom_fields>
<created_on>2018-08-27T09:09:09Z</created_on>
<updated_on>2018-09-11T08:40:08Z</updated_on>
<closed_on/>
</issue>
Xml is well formed and is parsed correctly. My guess is that TeamCity server doesn't have access to http://rm.local/ Could you please check?
I have made a new build of the plugin with more extensive logging: https://teamcity.jetbrains.com/viewLog.html?buildId=1607089&buildTypeId=TeamCityRedminePlugin_BuildForkAgainstTeamCity20181&tab=artifacts
More detailed logs will appear in teamcity-issue-trackers.log file inside logs directory
[2018-09-11 14:49:18,839] WARN - ins.buildServer.ISSUE_TRACKERS - IOException when trying to parse the issue data for '123' on 'http://rm.local/'
java.io.IOException: Expected END_ELEMENT, got event of type 1
at com.fasterxml.jackson.dataformat.xml.deser.XmlTokenStream.skipEndElement(XmlTokenStream.java:190)
at com.fasterxml.jackson.dataformat.xml.deser.FromXmlParser.nextToken(FromXmlParser.java:584)
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer.mapObject(UntypedObjectDeserializer.java:542)
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer.deserialize(UntypedObjectDeserializer.java:248)
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer.mapObject(UntypedObjectDeserializer.java:526)
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer.deserialize(UntypedObjectDeserializer.java:248)
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer.mapObject(UntypedObjectDeserializer.java:526)
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer.deserialize(UntypedObjectDeserializer.java:248)
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer.mapObject(UntypedObjectDeserializer.java:543)
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer.deserialize(UntypedObjectDeserializer.java:248)
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer.mapObject(UntypedObjectDeserializer.java:516)
at com.fasterxml.jackson.databind.deser.std.UntypedObjectDeserializer.deserialize(UntypedObjectDeserializer.java:248)
at com.fasterxml.jackson.databind.deser.std.MapDeserializer._readAndBindStringKeyMap(MapDeserializer.java:527)
at com.fasterxml.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:364)
at com.fasterxml.jackson.databind.deser.std.MapDeserializer.deserialize(MapDeserializer.java:29)
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:4001)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:3058)
at com.marcusilgner.redcity.RedmineIssueParser.parseIssueData(RedmineIssueParser.java:22)
at com.marcusilgner.redcity.RedmineIssueFetcher.lambda$getIssue$0(RedmineIssueFetcher.java:46)
at jetbrains.buildServer.issueTracker.AbstractIssueFetcher$2.apply(AbstractIssueFetcher.java:280)
at jetbrains.buildServer.issueTracker.AbstractIssueFetcher$2.apply(AbstractIssueFetcher.java:277)
at jetbrains.buildServer.serverSide.ReadOnlyRestrictor.doReadOnlyNetworkOperation(ReadOnlyRestrictor.java:13)
at jetbrains.buildServer.issueTracker.AbstractIssueFetcher.getFromCacheOrFetch(AbstractIssueFetcher.java:277)
at com.marcusilgner.redcity.RedmineIssueFetcher.getIssue(RedmineIssueFetcher.java:44)
at jetbrains.buildServer.issueTracker.AbstractIssueFetcher.fetchIssue(AbstractIssueFetcher.java:158)
at jetbrains.buildServer.issueTracker.AbstractIssueProvider$3.testConnection(AbstractIssueProvider.java:352)
at jetbrains.buildServer.controllers.admin.issues.TestConnectionController.doPost(TestConnectionController.java:19)
at jetbrains.buildServer.controllers.BaseFormXmlController$1.handleRequest(BaseFormXmlController.java:54)
at jetbrains.buildServer.controllers.AjaxRequestProcessor.processRequest(AjaxRequestProcessor.java:47)
at jetbrains.buildServer.controllers.BaseFormXmlController.doHandle(BaseFormXmlController.java:52)
at jetbrains.buildServer.controllers.BaseController.handleRequestInternal(BaseController.java:101)
at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:174)
at jetbrains.buildServer.controllers.BaseController.handleRequest(BaseController.java:80)
at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:50)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:872)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:661)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)
at jetbrains.buildServer.maintenance.TeamCityDispatcherServlet.processedByMainServlet(TeamCityDispatcherServlet.java:46)
at jetbrains.buildServer.maintenance.TeamCityDispatcherServlet.service(TeamCityDispatcherServlet.java:25)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at jetbrains.buildServer.web.jsp.JspPrecompilerFilter.doFilter(JspPrecompilerFilter.java:69)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at jetbrains.buildServer.web.DisableSessionIdFromUrlFilter.doFilter(DisableSessionIdFromUrlFilter.java:4)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:107)
at jetbrains.buildServer.diagnostic.web.DiagnosticFilter.doFilter(DiagnosticFilter.java:11)
at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:112)
at jetbrains.buildServer.web.DependencyParametersCalculationContextFilter.doFilter(DependencyParametersCalculationContextFilter.java:3)
at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:112)
at jetbrains.buildServer.web.ContentSecurityPolicyFilter.doFilter(ContentSecurityPolicyFilter.java:39)
at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:112)
at jetbrains.buildServer.web.CSRFFilter.doFilter(CSRFFilter.java:103)
at org.springframework.web.filter.CompositeFilter$VirtualFilterChain.doFilter(CompositeFilter.java:112)
at org.springframework.web.filter.CompositeFilter.doFilter(CompositeFilter.java:73)
at jetbrains.buildServer.web.DelegatingFilter.doFilter(DelegatingFilter.java:61)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at jetbrains.buildServer.web.ResponseFragmentFilter.doFilter(ResponseFragmentFilter.java:41)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:198)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:496)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:790)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1468)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
Fresh build here: https://teamcity.jetbrains.com/viewLog.html?buildId=1607387&buildTypeId=TeamCityRedminePlugin_BuildForkAgainstTeamCity20181&tab=artifacts
I have added logging of the response body. To see it in teamcity-issue-trackers.log, go to Administration->Diagnostics and switch to debug-issue-trackers active logging preset
Oleg, thank you for this detailed log! Now I can see the actual problem - redmine`s IIS returned "HTTP 401.2 - Unauthorized". TeamCity don`t use authorization headers :( If I allow anonymous access in IIS - this plugin works!