-
Bug
-
Resolution: Unresolved
-
Major
-
Windows XP
Gerrit modified my ant task by adding GIT specific environment variables in a way that causes the ant task to go belly up.
Here is a snippet from the log from a build where I have turned the escaping off. Note that the escaping option doesn't really fix the problem. Both variants (escaping on and off) fail.
16:18:18 c:\temp\hudsonwork\gerrit>exit 0 16:18:18 [TestProject] $ cmd.exe /C '"c:\java\apache-ant-1.8.2\bin\ant.bat -file build.xml "-DGERRIT_PATCHSET_UPLOADER=""Some Dude"" <somedude@hotmail.com>" -DGERRIT_CHANGE_URL=http://edo-git:8082/7 -DGERRIT_CHANGE_ID=I497fbd0d12d27ce4fa540a7cda578c1a41ced7ad -DGERRIT_CHANGE_NUMBER=7 "-DGERRIT_PATCHSET_UPLOADER_NAME=Some Dude" "-DGERRIT_CHANGE_SUBJECT=dont rely on the existence of local.properties" -DGERRIT_PATCHSET_UPLOADER_EMAIL=somedude@hotmail.com -DGERRIT_BRANCH=master -DGERRIT_REFSPEC=refs/changes/07/7/1 -DGERRIT_PATCHSET_NUMBER=1 "-DGERRIT_CHANGE_OWNER_NAME=Some Dude" -DGERRIT_PATCHSET_REVISION=497fbd0d12d27ce4fa540a7cda578c1a41ced7ad -DGERRIT_PROJECT=com.test.project "-DGERRIT_CHANGE_OWNER=""Some Dude"" <somedude@hotmail.com>" -DGERRIT_CHANGE_OWNER_EMAIL=somedude@hotmail.com -Dsdk.dir=c:/java/android-sdk-windows debug && exit %%ERRORLEVEL%%"' 16:18:18 Buildfile: c:\temp\hudsonwork\gerrit\TestProject\build.xml 16:18:19 16:18:19 BUILD FAILED 16:18:19 Target "Dude" does not exist in the project "TestProject".
When I build the project without the gerrit-trigger plugin I get the following (correct) format.
16:45:09 [TestProject] $ cmd.exe /C '"c:\java\apache-ant-1.8.2\bin\ant.bat -file build.xml -Dsdk.dir=c:/java/android-sdk-windows debug && exit %%ERRORLEVEL%%"' 16:45:09 Buildfile: c:\temp\hudsonwork\gerrit\TestProject\build.xml
Why are those attributes added in the first place? It would probably be easiest to just add a configuration switch to disable modification of the command line.
- is related to
-
JENKINS-10692 Mke it possible to not supply GERRIT_CHANGE_SUBJECT variable to build command lines.
-
- Open
-
I did a bit of digging in the Jenkins source and it seems that this might not be a gerrit-trigger problem at all but rather some broken parameter escaping policy on windows. I ran the same hudson job on a mac and there (if I put a checkmark into the "escape parameters" option) it works. So maybe we need to raise a ticket against the core Jenkins.
The other thing that I find weird is that actually only want to provide the GERRIT_REFSPEC variable to the get job. The way that its currently done creates this side effect that every Builder will not add those parameters (just like ant did in my example). The question is whether there isn't a different way to do that.