Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-33712

Empty parameterized build properties not quoted when passed to ant

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: Blocker Blocker
    • ant-plugin, core
    • Jenkins 1.654 ; Jenkins 2.0 ; Jenkins 2.1
      Ant Plugin 1.2
      Windows 7 x86_64 (master and slave)
      Apache Ant 1.9.6

      I have a parameterized build job that defines multiple string parameters. The main build step in that job is "Invoke Ant".

      Even though I do not define any "Properties" under "Invoke Ant", all of my job parameters are being passed to ant using "-D<Name>=<Value>". That is fine, except when one of my string parameters is blank. In that case Jenkins passes ant "-D<Name>=", which causes ant to barf.

      If a job parameter is blank then either it should not be passed to ant, or (probably better) a quoted empty string ("") should be passed to ant.

      Attached are a trivial ant build.xml and Jenkins config.xml that demonstrate the problem.

      Here is a sample Console Output:

      Building remotely on iqautobuild14 in workspace F:\Jenkins\workspace\AntJobWithProperty
      [AntJobWithProperty] $ cmd.exe /C "F:\Jenkins\tools\hudson.tasks.Ant_AntInstallation\Ant_from_Apache_\bin\ant.bat -DMY_VAR= && exit %%ERRORLEVEL%%"
      Missing value for property MY_VAR
      Build step 'Invoke Ant' marked build as failure
      Finished: FAILURE

      Note that this issue appears to be the same as JENKINS-5157 and JENKINS-7204 (among others), but those issues are supposedly fixed already. Either there is a subtle difference here that I do not understand, or Jenkins has suffered a regression.

        1. build.xml
          0.1 kB
        2. config.xml
          1 kB

          [JENKINS-33712] Empty parameterized build properties not quoted when passed to ant

          Keith Currier created issue -

          Chris Vesters added a comment - - edited

          We are facing the same problem after an upgrade to 1.654

          This looks like a regression, if I compare the old commands with the new one you can clearly see the difference. Before the command was being extra quoted with single quotes, and an empty value would become an empty string (surrounded by double quotes):

          [hudson_ant] $ cmd.exe /C '" -Dparam="" "'
          

          These extra single quotes are gone now, and the empty value is just empty.

          [hudson_ant] $ cmd.exe /C " -Dparam= "
          

          I have tried setting both "" and '' as a value. In the first case the resulting command has invalid syntax, in the second case the value was causing problems further down along the line of our process. This means that this bug is a real killer for us, as we can now only delete the parameter completely.

          Chris Vesters added a comment - - edited We are facing the same problem after an upgrade to 1.654 This looks like a regression, if I compare the old commands with the new one you can clearly see the difference. Before the command was being extra quoted with single quotes, and an empty value would become an empty string (surrounded by double quotes): [hudson_ant] $ cmd.exe /C '" -Dparam="" "' These extra single quotes are gone now, and the empty value is just empty. [hudson_ant] $ cmd.exe /C " -Dparam= " I have tried setting both "" and '' as a value. In the first case the resulting command has invalid syntax, in the second case the value was causing problems further down along the line of our process. This means that this bug is a real killer for us, as we can now only delete the parameter completely.

          Same here. Due to this issue we're unable to upgrade to 1.654.

          Piotr Paczyński added a comment - Same here. Due to this issue we're unable to upgrade to 1.654.
          Ben Apgar made changes -
          Link New: This issue is related to JENKINS-33727 [ JENKINS-33727 ]
          Emilio Escobar made changes -
          Assignee New: Emilio Escobar [ escoem ]
          Emilio Escobar made changes -
          Status Original: Open [ 1 ] New: In Progress [ 3 ]
          Daniel Beck made changes -
          Comment [ [~escoem] FYI another one. ]
          Daniel Beck made changes -
          Labels New: regression

          K P added a comment -

          Jenkins has indeed has suffered a regression. (I don't know when it started; I'm using 1.656 but skipped some intermediate updates)

          Previous jenkins versions passed empty parameters to ant quoted as:
          -Dparam=""

          Version 1.656 passes them as:
          -Dparam=

          Now this fails ant horribly, because subsequent command line argument get parsed by ant as ant target ; which of course makes no sense, and fails the whole thing.

          K P added a comment - Jenkins has indeed has suffered a regression. (I don't know when it started; I'm using 1.656 but skipped some intermediate updates) Previous jenkins versions passed empty parameters to ant quoted as: -Dparam="" Version 1.656 passes them as: -Dparam= Now this fails ant horribly, because subsequent command line argument get parsed by ant as ant target ; which of course makes no sense, and fails the whole thing.
          K P made changes -
          Priority Original: Major [ 3 ] New: Blocker [ 1 ]

            escoem Emilio Escobar
            kcurrier Keith Currier
            Votes:
            8 Vote for this issue
            Watchers:
            15 Start watching this issue

              Created:
              Updated:
              Resolved: