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

Check out of project wth svn:externals to files fails

    • Icon: Bug Bug
    • Resolution: Unresolved
    • Icon: Minor Minor
    • subversion-plugin
    • None
    • Jenkins 1.638
      svn plugin 2.5.4
      svn working copy format 1.7

      Checking out a project with two file externals fails with the following errors:

      [...]
      A         web-app/WEB-INF/instruments/ESPRESSO-1.01/ESPRESSO_multiMR_obs.tsf
      A         web-app/WEB-INF/instruments/ESPRESSO-1.01/test_ESPRESSO_TPL_sci.tsf
      A         web-app/WEB-INF/instruments/ESPRESSO-1.01/ESPRESSERROR: Failed to check out http://<host>/trunk/DFS/p2
      org.tmatesoft.svn.core.SVNCancelException: svn: E200015: authentication cancelled
      	at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:37)
      	at org.tmatesoft.svn.core.internal.wc.SVNErrorManager.cancel(SVNErrorManager.java:32)
      	at org.tmatesoft.svn.core.internal.wc.DefaultSVNAuthenticationManager.getNextAuthentication(DefaultSVNAuthenticationManager.java:215)
      	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:685)
      	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:371)
      	at org.tmatesoft.svn.core.internal.io.dav.http.HTTPConnection.request(HTTPConnection.java:359)
      	at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.performHttpRequest(DAVConnection.java:710)
      	at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.exchangeCapabilities(DAVConnection.java:627)
      	at org.tmatesoft.svn.core.internal.io.dav.DAVConnection.open(DAVConnection.java:102)
      	at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.openConnection(DAVRepository.java:1032)
      	at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.hasCapability(DAVRepository.java:860)
      	at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.runReport(DAVRepository.java:1278)
      	at org.tmatesoft.svn.core.internal.io.dav.DAVRepository.update(DAVRepository.java:845)
      	at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgAbstractUpdate.switchFileExternal(SvnNgAbstractUpdate.java:587)
      	at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgAbstractUpdate.handleExternalItemChange(SvnNgAbstractUpdate.java:395)
      	at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgAbstractUpdate.handleExternalsChange(SvnNgAbstractUpdate.java:310)
      	at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgAbstractUpdate.handleExternals(SvnNgAbstractUpdate.java:246)
      	at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgAbstractUpdate.updateInternal(SvnNgAbstractUpdate.java:224)
      	at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgAbstractUpdate.update(SvnNgAbstractUpdate.java:72)
      	at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgAbstractUpdate.checkout(SvnNgAbstractUpdate.java:802)
      	at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgCheckout.run(SvnNgCheckout.java:26)
      	at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgCheckout.run(SvnNgCheckout.java:11)
      	at org.tmatesoft.svn.core.internal.wc2.ng.SvnNgOperationRunner.run(SvnNgOperationRunner.java:20)
      	at org.tmatesoft.svn.core.internal.wc2.SvnOperationRunner.run(SvnOperationRunner.java:21)
      	at org.tmatesoft.svn.core.wc2.SvnOperationFactory.run(SvnOperationFactory.java:1259)
      	at org.tmatesoft.svn.core.wc2.SvnOperation.run(SvnOperation.java:294)
      	at hudson.scm.subversion.CheckoutUpdater$1.perform(CheckoutUpdater.java:121)
      	at hudson.scm.subversion.WorkspaceUpdater$UpdateTask.delegateTo(WorkspaceUpdater.java:162)
      	at hudson.scm.SubversionSCM$CheckOutTask.perform(SubversionSCM.java:992)
      	at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:973)
      	at hudson.scm.SubversionSCM$CheckOutTask.invoke(SubversionSCM.java:949)
      	at hudson.FilePath$FileCallableWrapper.call(FilePath.java:2691)
      	at hudson.remoting.UserRequest.perform(UserRequest.java:121)
      	at hudson.remoting.UserRequest.perform(UserRequest.java:49)
      	at hudson.remoting.Request$2.run(Request.java:326)
      	at hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:68)
      	at java.util.concurrent.FutureTask.run(FutureTask.java:262)
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
      	at java.lang.Thread.run(Thread.java:745)
      O_singleUHR_cal_pix.tsf
      A         web-app/WEB-INF/instruments/ESPRESSO-1.01/ESPRESSO_single_acq_obj.tsf
      A         web-app/WEB-INF/instruments/evmAPI.tcl
      [...]
      A         grailsw.bat
      A         application.properties
       U        .
      Fetching 'http://<host>/trunk/DFS/OHS/esoAuthenticator/src/main/java/org/eso/ohs/esoAuthenticator/BCrypt.java' at -1 into '/diska/home/jenkins/workspace/p2web/src/java/org/eso/ohs/esoAuthenticator/BCrypt.java'
      FATAL: null
      java.lang.NullPointerException
      	at java.util.ArrayList.addAll(ArrayList.java:559)
      	at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:898)
      	at hudson.scm.SubversionSCM.checkout(SubversionSCM.java:834)
      	at hudson.scm.SCM.checkout(SCM.java:485)
      	at hudson.model.AbstractProject.checkout(AbstractProject.java:1284)
      	at hudson.model.AbstractBuild$AbstractBuildExecution.defaultCheckout(AbstractBuild.java:610)
      	at jenkins.scm.SCMCheckoutStrategy.checkout(SCMCheckoutStrategy.java:86)
      	at hudson.model.AbstractBuild$AbstractBuildExecution.run(AbstractBuild.java:532)
      	at hudson.model.Run.execute(Run.java:1741)
      	at hudson.model.FreeStyleBuild.run(FreeStyleBuild.java:43)
      	at hudson.model.ResourceController.execute(ResourceController.java:98)
      	at hudson.model.Executor.run(Executor.java:381)
      }}
      

      Note that the URL reported for the SVNCancelException is the URL of the project I am checking out. The URL reported with NPE is the URL of one of the file externals.

      Extra credentials for the externals are set up as described in JENKINS-21785 (and they work in other projects that use externals to directories).

      The externals are in the "new" format, that list the URL first, followed by the destination. The svn:externals property is set on the directory into which the files will be checked-out. I tried this with '-rXXX <URL> filename', '<URL>@XXX filename' format, and the same without pinning the version of the external file(s). All result in the same errors.

          [JENKINS-31662] Check out of project wth svn:externals to files fails

          mpruemm, Could you provide the job configuration?

          Manuel Recena Soto added a comment - mpruemm , Could you provide the job configuration?

          M P added a comment - - edited

          Sure. Note that this one has a workaround configured: the svn plugin does not check out the externals, but an extra build step (shell script) pulls them in with the regular svn command.

          When I comment that line and uncheck "ignore externals" in the svn plugin, the problem reappears.

          Here is the config.xml; see below for the svn:externals in question.

          <?xml version='1.0' encoding='UTF-8'?>
          <project>
            <actions/>
            <description>P2 Web Development</description>
            <logRotator class="hudson.tasks.LogRotator">
              <daysToKeep>-1</daysToKeep>
              <numToKeep>10</numToKeep>
              <artifactDaysToKeep>-1</artifactDaysToKeep>
              <artifactNumToKeep>-1</artifactNumToKeep>
            </logRotator>
            <keepDependencies>false</keepDependencies>
            <properties>
              <org.jenkins.plugins.lockableresources.RequiredResourcesProperty plugin="lockable-resources@1.7">
                <resourceNames>P2WEB-tomcat</resourceNames>
              </org.jenkins.plugins.lockableresources.RequiredResourcesProperty>
            </properties>
            <scm class="hudson.scm.SubversionSCM" plugin="subversion@2.5.4">
              <locations>
                <hudson.scm.SubversionSCM_-ModuleLocation>
                  <remote>http://svnhost.example.com/p2/trunk/DFS/p2</remote>
                  <credentialsId>2d3117d2-89e6-428d-adc8-cbd4a04613e5</credentialsId>
                  <local>.</local>
                  <depthOption>infinity</depthOption>
                  <ignoreExternalsOption>true</ignoreExternalsOption>
                </hudson.scm.SubversionSCM_-ModuleLocation>
              </locations>
              <additionalCredentials>
                <hudson.scm.SubversionSCM_-AdditionalCredentials>
                  <realm>&lt;http://ssvnhost.example.com:80&gt; p2 SVN Repository</realm>
                  <credentialsId>2d3117d2-89e6-428d-adc8-cbd4a04613e5</credentialsId>
                </hudson.scm.SubversionSCM_-AdditionalCredentials>
              </additionalCredentials>
              <browser class="hudson.scm.browsers.ViewSVN">
                <url>http://svnhost.example.com/viewvc/p2/</url>
              </browser>
              <excludedRegions>/trunk/DFS/p2/web-app/apidoc.*
          /trunk/DFS/p2/web-app/WEB-INF/.*\.yaml
          </excludedRegions>
              <includedRegions></includedRegions>
              <excludedUsers></excludedUsers>
              <excludedRevprop></excludedRevprop>
              <excludedCommitMessages></excludedCommitMessages>
              <workspaceUpdater class="hudson.scm.subversion.CheckoutUpdater"/>
              <ignoreDirPropChanges>false</ignoreDirPropChanges>
              <filterChangelog>false</filterChangelog>
            </scm>
            <assignedNode>seq</assignedNode>
            <canRoam>false</canRoam>
            <disabled>false</disabled>
            <blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding>
            <blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding>
            <jdk>Java7 32</jdk>
            <triggers>
              <hudson.triggers.SCMTrigger>
                <spec>H/2 * * * *</spec>
                <ignorePostCommitHooks>false</ignorePostCommitHooks>
              </hudson.triggers.SCMTrigger>
            </triggers>
            <concurrentBuild>false</concurrentBuild>
            <builders>
              <hudson.tasks.Shell>
                <command># pull in externals -- apparently Jenkins is unable to do that :-(
          svn update --non-interactive</command>
              </hudson.tasks.Shell>
              <com.g2one.hudson.grails.GrailsBuilder plugin="grails@1.7">
                <targets>&quot;test-app functional:&quot; &quot;test test-more integration: -coverage&quot; &quot;codenarc&quot;</targets>
                <name>2.5.0</name>
                <grailsWorkDir></grailsWorkDir>
                <projectWorkDir></projectWorkDir>
                <projectBaseDir></projectBaseDir>
                <serverPort>28722</serverPort>
                <properties></properties>
                <forceUpgrade>false</forceUpgrade>
                <nonInteractive>true</nonInteractive>
                <useWrapper>false</useWrapper>
                <plainOutput>true</plainOutput>
                <stackTrace>false</stackTrace>
                <verbose>false</verbose>
                <refreshDependencies>false</refreshDependencies>
              </com.g2one.hudson.grails.GrailsBuilder>
              <com.g2one.hudson.grails.GrailsBuilder plugin="grails@1.7">
                <targets>&quot;war target/p2-latest.war&quot; </targets>
                <name>2.5.0</name>
                <grailsWorkDir></grailsWorkDir>
                <projectWorkDir></projectWorkDir>
                <projectBaseDir></projectBaseDir>
                <serverPort></serverPort>
                <properties>grails.env=demo</properties>
                <forceUpgrade>false</forceUpgrade>
                <nonInteractive>true</nonInteractive>
                <useWrapper>false</useWrapper>
                <plainOutput>true</plainOutput>
                <stackTrace>false</stackTrace>
                <verbose>false</verbose>
                <refreshDependencies>false</refreshDependencies>
              </com.g2one.hudson.grails.GrailsBuilder>
            </builders>
            <publishers>
              <htmlpublisher.HtmlPublisher plugin="htmlpublisher@1.9">
                <reportTargets>
                  <htmlpublisher.HtmlPublisherTarget>
                    <reportName>Coverage Report</reportName>
                    <reportDir>target/test-reports/cobertura</reportDir>
                    <reportFiles>index.html</reportFiles>
                    <alwaysLinkToLastBuild>false</alwaysLinkToLastBuild>
                    <keepAll>true</keepAll>
                    <allowMissing>true</allowMissing>
                  </htmlpublisher.HtmlPublisherTarget>
                  <htmlpublisher.HtmlPublisherTarget>
                    <reportName>Coding Style Report</reportName>
                    <reportDir>target/codenarc</reportDir>
                    <reportFiles>index.html</reportFiles>
                    <alwaysLinkToLastBuild>true</alwaysLinkToLastBuild>
                    <keepAll>true</keepAll>
                    <allowMissing>false</allowMissing>
                  </htmlpublisher.HtmlPublisherTarget>
                </reportTargets>
              </htmlpublisher.HtmlPublisher>
              <hudson.tasks.junit.JUnitResultArchiver plugin="junit@1.9">
                <testResults>target/test-reports/TEST-*.xml</testResults>
                <keepLongStdio>false</keepLongStdio>
                <healthScaleFactor>1.0</healthScaleFactor>
              </hudson.tasks.junit.JUnitResultArchiver>
              <hudson.plugins.violations.ViolationsPublisher plugin="violations@0.7.11">
                <config>
                  <suppressions class="sorted-set"/>
                  <typeConfigs>
                    <entry>
                      <string>checkstyle</string>
                      <hudson.plugins.violations.TypeConfig>
                        <type>checkstyle</type>
                        <min>10</min>
                        <max>999</max>
                        <unstable>999</unstable>
                        <usePattern>false</usePattern>
                        <pattern></pattern>
                      </hudson.plugins.violations.TypeConfig>
                    </entry>
                    <entry>
                      <string>codenarc</string>
                      <hudson.plugins.violations.TypeConfig>
                        <type>codenarc</type>
                        <min>10</min>
                        <max>999</max>
                        <unstable>999</unstable>
                        <usePattern>false</usePattern>
                        <pattern>target/**/codenarc.xml</pattern>
                      </hudson.plugins.violations.TypeConfig>
                    </entry>
                    <entry>
                      <string>cpd</string>
                      <hudson.plugins.violations.TypeConfig>
                        <type>cpd</type>
                        <min>10</min>
                        <max>999</max>
                        <unstable>999</unstable>
                        <usePattern>false</usePattern>
                        <pattern></pattern>
                      </hudson.plugins.violations.TypeConfig>
                    </entry>
                    <entry>
                      <string>cpplint</string>
                      <hudson.plugins.violations.TypeConfig>
                        <type>cpplint</type>
                        <min>10</min>
                        <max>999</max>
                        <unstable>999</unstable>
                        <usePattern>false</usePattern>
                        <pattern></pattern>
                      </hudson.plugins.violations.TypeConfig>
                    </entry>
                    <entry>
                      <string>csslint</string>
                      <hudson.plugins.violations.TypeConfig>
                        <type>csslint</type>
                        <min>10</min>
                        <max>999</max>
                        <unstable>999</unstable>
                        <usePattern>false</usePattern>
                        <pattern></pattern>
                      </hudson.plugins.violations.TypeConfig>
                    </entry>
                    <entry>
                      <string>findbugs</string>
                      <hudson.plugins.violations.TypeConfig>
                        <type>findbugs</type>
                        <min>10</min>
                        <max>999</max>
                        <unstable>999</unstable>
                        <usePattern>false</usePattern>
                        <pattern></pattern>
                      </hudson.plugins.violations.TypeConfig>
                    </entry>
                    <entry>
                      <string>fxcop</string>
                      <hudson.plugins.violations.TypeConfig>
                        <type>fxcop</type>
                        <min>10</min>
                        <max>999</max>
                        <unstable>999</unstable>
                        <usePattern>false</usePattern>
                        <pattern></pattern>
                      </hudson.plugins.violations.TypeConfig>
                    </entry>
                    <entry>
                      <string>gendarme</string>
                      <hudson.plugins.violations.TypeConfig>
                        <type>gendarme</type>
                        <min>10</min>
                        <max>999</max>
                        <unstable>999</unstable>
                        <usePattern>false</usePattern>
                        <pattern></pattern>
                      </hudson.plugins.violations.TypeConfig>
                    </entry>
                    <entry>
                      <string>jcreport</string>
                      <hudson.plugins.violations.TypeConfig>
                        <type>jcreport</type>
                        <min>10</min>
                        <max>999</max>
                        <unstable>999</unstable>
                        <usePattern>false</usePattern>
                        <pattern></pattern>
                      </hudson.plugins.violations.TypeConfig>
                    </entry>
                    <entry>
                      <string>jslint</string>
                      <hudson.plugins.violations.TypeConfig>
                        <type>jslint</type>
                        <min>10</min>
                        <max>999</max>
                        <unstable>999</unstable>
                        <usePattern>false</usePattern>
                        <pattern></pattern>
                      </hudson.plugins.violations.TypeConfig>
                    </entry>
                    <entry>
                      <string>pep8</string>
                      <hudson.plugins.violations.TypeConfig>
                        <type>pep8</type>
                        <min>10</min>
                        <max>999</max>
                        <unstable>999</unstable>
                        <usePattern>false</usePattern>
                        <pattern></pattern>
                      </hudson.plugins.violations.TypeConfig>
                    </entry>
                    <entry>
                      <string>perlcritic</string>
                      <hudson.plugins.violations.TypeConfig>
                        <type>perlcritic</type>
                        <min>10</min>
                        <max>999</max>
                        <unstable>999</unstable>
                        <usePattern>false</usePattern>
                        <pattern></pattern>
                      </hudson.plugins.violations.TypeConfig>
                    </entry>
                    <entry>
                      <string>pmd</string>
                      <hudson.plugins.violations.TypeConfig>
                        <type>pmd</type>
                        <min>10</min>
                        <max>999</max>
                        <unstable>999</unstable>
                        <usePattern>false</usePattern>
                        <pattern></pattern>
                      </hudson.plugins.violations.TypeConfig>
                    </entry>
                    <entry>
                      <string>pylint</string>
                      <hudson.plugins.violations.TypeConfig>
                        <type>pylint</type>
                        <min>10</min>
                        <max>999</max>
                        <unstable>999</unstable>
                        <usePattern>false</usePattern>
                        <pattern></pattern>
                      </hudson.plugins.violations.TypeConfig>
                    </entry>
                    <entry>
                      <string>simian</string>
                      <hudson.plugins.violations.TypeConfig>
                        <type>simian</type>
                        <min>10</min>
                        <max>999</max>
                        <unstable>999</unstable>
                        <usePattern>false</usePattern>
                        <pattern></pattern>
                      </hudson.plugins.violations.TypeConfig>
                    </entry>
                    <entry>
                      <string>stylecop</string>
                      <hudson.plugins.violations.TypeConfig>
                        <type>stylecop</type>
                        <min>10</min>
                        <max>999</max>
                        <unstable>999</unstable>
                        <usePattern>false</usePattern>
                        <pattern></pattern>
                      </hudson.plugins.violations.TypeConfig>
                    </entry>
                  </typeConfigs>
                  <limit>100</limit>
                  <sourcePathPattern></sourcePathPattern>
                  <fauxProjectPath></fauxProjectPath>
                  <encoding>default</encoding>
                </config>
              </hudson.plugins.violations.ViolationsPublisher>
              <hudson.plugins.deploy.DeployPublisher plugin="deploy@1.10">
                <adapters>
                  <hudson.plugins.deploy.tomcat.Tomcat7xAdapter>
                    <userName>jenkins</userName>
                    <passwordScrambled>XXXXXXXXXX</passwordScrambled>
                    <url>http://tomcat.example.com</url>
                  </hudson.plugins.deploy.tomcat.Tomcat7xAdapter>
                </adapters>
                <contextPath>/p2ci</contextPath>
                <war>target/p2-latest.war</war>
                <onFailure>true</onFailure>
              </hudson.plugins.deploy.DeployPublisher>
              <hudson.tasks.Mailer plugin="mailer@1.15">
                <recipients>xxx@example.com</recipients>
                <dontNotifyEveryUnstableBuild>false</dontNotifyEveryUnstableBuild>
                <sendToIndividuals>false</sendToIndividuals>
              </hudson.tasks.Mailer>
            </publishers>
            <buildWrappers/>
          </project>
          

          svn:externals:

          $ svn proplist -v .
          Properties on '.':
            svn:externals
              ^/trunk/DFS/OHS/esoAuthenticator/src/main/java/org/eso/ohs/esoAuthenticator/BCrypt.java BCrypt.java
              ^/trunk/DFS/OHS/esoAuthenticator/src/main/java/org/eso/ohs/esoAuthenticator/EncryptionAlgorithm.java EncryptionAlgorithm.java
          

          M P added a comment - - edited Sure. Note that this one has a workaround configured: the svn plugin does not check out the externals, but an extra build step (shell script) pulls them in with the regular svn command. When I comment that line and uncheck "ignore externals" in the svn plugin, the problem reappears. Here is the config.xml; see below for the svn:externals in question. <?xml version='1.0' encoding='UTF-8'?> <project> <actions/> <description>P2 Web Development</description> <logRotator class="hudson.tasks.LogRotator"> <daysToKeep>-1</daysToKeep> <numToKeep>10</numToKeep> <artifactDaysToKeep>-1</artifactDaysToKeep> <artifactNumToKeep>-1</artifactNumToKeep> </logRotator> <keepDependencies>false</keepDependencies> <properties> <org.jenkins.plugins.lockableresources.RequiredResourcesProperty plugin="lockable-resources@1.7"> <resourceNames>P2WEB-tomcat</resourceNames> </org.jenkins.plugins.lockableresources.RequiredResourcesProperty> </properties> <scm class="hudson.scm.SubversionSCM" plugin="subversion@2.5.4"> <locations> <hudson.scm.SubversionSCM_-ModuleLocation> <remote>http://svnhost.example.com/p2/trunk/DFS/p2</remote> <credentialsId>2d3117d2-89e6-428d-adc8-cbd4a04613e5</credentialsId> <local>.</local> <depthOption>infinity</depthOption> <ignoreExternalsOption>true</ignoreExternalsOption> </hudson.scm.SubversionSCM_-ModuleLocation> </locations> <additionalCredentials> <hudson.scm.SubversionSCM_-AdditionalCredentials> <realm>&lt;http://ssvnhost.example.com:80&gt; p2 SVN Repository</realm> <credentialsId>2d3117d2-89e6-428d-adc8-cbd4a04613e5</credentialsId> </hudson.scm.SubversionSCM_-AdditionalCredentials> </additionalCredentials> <browser class="hudson.scm.browsers.ViewSVN"> <url>http://svnhost.example.com/viewvc/p2/</url> </browser> <excludedRegions>/trunk/DFS/p2/web-app/apidoc.* /trunk/DFS/p2/web-app/WEB-INF/.*\.yaml </excludedRegions> <includedRegions></includedRegions> <excludedUsers></excludedUsers> <excludedRevprop></excludedRevprop> <excludedCommitMessages></excludedCommitMessages> <workspaceUpdater class="hudson.scm.subversion.CheckoutUpdater"/> <ignoreDirPropChanges>false</ignoreDirPropChanges> <filterChangelog>false</filterChangelog> </scm> <assignedNode>seq</assignedNode> <canRoam>false</canRoam> <disabled>false</disabled> <blockBuildWhenDownstreamBuilding>false</blockBuildWhenDownstreamBuilding> <blockBuildWhenUpstreamBuilding>false</blockBuildWhenUpstreamBuilding> <jdk>Java7 32</jdk> <triggers> <hudson.triggers.SCMTrigger> <spec>H/2 * * * *</spec> <ignorePostCommitHooks>false</ignorePostCommitHooks> </hudson.triggers.SCMTrigger> </triggers> <concurrentBuild>false</concurrentBuild> <builders> <hudson.tasks.Shell> <command># pull in externals -- apparently Jenkins is unable to do that :-( svn update --non-interactive</command> </hudson.tasks.Shell> <com.g2one.hudson.grails.GrailsBuilder plugin="grails@1.7"> <targets>&quot;test-app functional:&quot; &quot;test test-more integration: -coverage&quot; &quot;codenarc&quot;</targets> <name>2.5.0</name> <grailsWorkDir></grailsWorkDir> <projectWorkDir></projectWorkDir> <projectBaseDir></projectBaseDir> <serverPort>28722</serverPort> <properties></properties> <forceUpgrade>false</forceUpgrade> <nonInteractive>true</nonInteractive> <useWrapper>false</useWrapper> <plainOutput>true</plainOutput> <stackTrace>false</stackTrace> <verbose>false</verbose> <refreshDependencies>false</refreshDependencies> </com.g2one.hudson.grails.GrailsBuilder> <com.g2one.hudson.grails.GrailsBuilder plugin="grails@1.7"> <targets>&quot;war target/p2-latest.war&quot; </targets> <name>2.5.0</name> <grailsWorkDir></grailsWorkDir> <projectWorkDir></projectWorkDir> <projectBaseDir></projectBaseDir> <serverPort></serverPort> <properties>grails.env=demo</properties> <forceUpgrade>false</forceUpgrade> <nonInteractive>true</nonInteractive> <useWrapper>false</useWrapper> <plainOutput>true</plainOutput> <stackTrace>false</stackTrace> <verbose>false</verbose> <refreshDependencies>false</refreshDependencies> </com.g2one.hudson.grails.GrailsBuilder> </builders> <publishers> <htmlpublisher.HtmlPublisher plugin="htmlpublisher@1.9"> <reportTargets> <htmlpublisher.HtmlPublisherTarget> <reportName>Coverage Report</reportName> <reportDir>target/test-reports/cobertura</reportDir> <reportFiles>index.html</reportFiles> <alwaysLinkToLastBuild>false</alwaysLinkToLastBuild> <keepAll>true</keepAll> <allowMissing>true</allowMissing> </htmlpublisher.HtmlPublisherTarget> <htmlpublisher.HtmlPublisherTarget> <reportName>Coding Style Report</reportName> <reportDir>target/codenarc</reportDir> <reportFiles>index.html</reportFiles> <alwaysLinkToLastBuild>true</alwaysLinkToLastBuild> <keepAll>true</keepAll> <allowMissing>false</allowMissing> </htmlpublisher.HtmlPublisherTarget> </reportTargets> </htmlpublisher.HtmlPublisher> <hudson.tasks.junit.JUnitResultArchiver plugin="junit@1.9"> <testResults>target/test-reports/TEST-*.xml</testResults> <keepLongStdio>false</keepLongStdio> <healthScaleFactor>1.0</healthScaleFactor> </hudson.tasks.junit.JUnitResultArchiver> <hudson.plugins.violations.ViolationsPublisher plugin="violations@0.7.11"> <config> <suppressions class="sorted-set"/> <typeConfigs> <entry> <string>checkstyle</string> <hudson.plugins.violations.TypeConfig> <type>checkstyle</type> <min>10</min> <max>999</max> <unstable>999</unstable> <usePattern>false</usePattern> <pattern></pattern> </hudson.plugins.violations.TypeConfig> </entry> <entry> <string>codenarc</string> <hudson.plugins.violations.TypeConfig> <type>codenarc</type> <min>10</min> <max>999</max> <unstable>999</unstable> <usePattern>false</usePattern> <pattern>target/**/codenarc.xml</pattern> </hudson.plugins.violations.TypeConfig> </entry> <entry> <string>cpd</string> <hudson.plugins.violations.TypeConfig> <type>cpd</type> <min>10</min> <max>999</max> <unstable>999</unstable> <usePattern>false</usePattern> <pattern></pattern> </hudson.plugins.violations.TypeConfig> </entry> <entry> <string>cpplint</string> <hudson.plugins.violations.TypeConfig> <type>cpplint</type> <min>10</min> <max>999</max> <unstable>999</unstable> <usePattern>false</usePattern> <pattern></pattern> </hudson.plugins.violations.TypeConfig> </entry> <entry> <string>csslint</string> <hudson.plugins.violations.TypeConfig> <type>csslint</type> <min>10</min> <max>999</max> <unstable>999</unstable> <usePattern>false</usePattern> <pattern></pattern> </hudson.plugins.violations.TypeConfig> </entry> <entry> <string>findbugs</string> <hudson.plugins.violations.TypeConfig> <type>findbugs</type> <min>10</min> <max>999</max> <unstable>999</unstable> <usePattern>false</usePattern> <pattern></pattern> </hudson.plugins.violations.TypeConfig> </entry> <entry> <string>fxcop</string> <hudson.plugins.violations.TypeConfig> <type>fxcop</type> <min>10</min> <max>999</max> <unstable>999</unstable> <usePattern>false</usePattern> <pattern></pattern> </hudson.plugins.violations.TypeConfig> </entry> <entry> <string>gendarme</string> <hudson.plugins.violations.TypeConfig> <type>gendarme</type> <min>10</min> <max>999</max> <unstable>999</unstable> <usePattern>false</usePattern> <pattern></pattern> </hudson.plugins.violations.TypeConfig> </entry> <entry> <string>jcreport</string> <hudson.plugins.violations.TypeConfig> <type>jcreport</type> <min>10</min> <max>999</max> <unstable>999</unstable> <usePattern>false</usePattern> <pattern></pattern> </hudson.plugins.violations.TypeConfig> </entry> <entry> <string>jslint</string> <hudson.plugins.violations.TypeConfig> <type>jslint</type> <min>10</min> <max>999</max> <unstable>999</unstable> <usePattern>false</usePattern> <pattern></pattern> </hudson.plugins.violations.TypeConfig> </entry> <entry> <string>pep8</string> <hudson.plugins.violations.TypeConfig> <type>pep8</type> <min>10</min> <max>999</max> <unstable>999</unstable> <usePattern>false</usePattern> <pattern></pattern> </hudson.plugins.violations.TypeConfig> </entry> <entry> <string>perlcritic</string> <hudson.plugins.violations.TypeConfig> <type>perlcritic</type> <min>10</min> <max>999</max> <unstable>999</unstable> <usePattern>false</usePattern> <pattern></pattern> </hudson.plugins.violations.TypeConfig> </entry> <entry> <string>pmd</string> <hudson.plugins.violations.TypeConfig> <type>pmd</type> <min>10</min> <max>999</max> <unstable>999</unstable> <usePattern>false</usePattern> <pattern></pattern> </hudson.plugins.violations.TypeConfig> </entry> <entry> <string>pylint</string> <hudson.plugins.violations.TypeConfig> <type>pylint</type> <min>10</min> <max>999</max> <unstable>999</unstable> <usePattern>false</usePattern> <pattern></pattern> </hudson.plugins.violations.TypeConfig> </entry> <entry> <string>simian</string> <hudson.plugins.violations.TypeConfig> <type>simian</type> <min>10</min> <max>999</max> <unstable>999</unstable> <usePattern>false</usePattern> <pattern></pattern> </hudson.plugins.violations.TypeConfig> </entry> <entry> <string>stylecop</string> <hudson.plugins.violations.TypeConfig> <type>stylecop</type> <min>10</min> <max>999</max> <unstable>999</unstable> <usePattern>false</usePattern> <pattern></pattern> </hudson.plugins.violations.TypeConfig> </entry> </typeConfigs> <limit>100</limit> <sourcePathPattern></sourcePathPattern> <fauxProjectPath></fauxProjectPath> <encoding>default</encoding> </config> </hudson.plugins.violations.ViolationsPublisher> <hudson.plugins.deploy.DeployPublisher plugin="deploy@1.10"> <adapters> <hudson.plugins.deploy.tomcat.Tomcat7xAdapter> <userName>jenkins</userName> <passwordScrambled>XXXXXXXXXX</passwordScrambled> <url>http://tomcat.example.com</url> </hudson.plugins.deploy.tomcat.Tomcat7xAdapter> </adapters> <contextPath>/p2ci</contextPath> <war>target/p2-latest.war</war> <onFailure>true</onFailure> </hudson.plugins.deploy.DeployPublisher> <hudson.tasks.Mailer plugin="mailer@1.15"> <recipients>xxx@example.com</recipients> <dontNotifyEveryUnstableBuild>false</dontNotifyEveryUnstableBuild> <sendToIndividuals>false</sendToIndividuals> </hudson.tasks.Mailer> </publishers> <buildWrappers/> </project> svn:externals: $ svn proplist -v . Properties on '.': svn:externals ^/trunk/DFS/OHS/esoAuthenticator/src/main/java/org/eso/ohs/esoAuthenticator/BCrypt.java BCrypt.java ^/trunk/DFS/OHS/esoAuthenticator/src/main/java/org/eso/ohs/esoAuthenticator/EncryptionAlgorithm.java EncryptionAlgorithm.java

          mpruemm, Please, apply format to your comment.

          You don't need a workaround to use svn:externals. I recommend you do not use SVN Client in CLI when your working copy was checked out with Subversion Plugin.

          Manuel Recena Soto added a comment - mpruemm , Please, apply format to your comment. You don't need a workaround to use svn:externals . I recommend you do not use SVN Client in CLI when your working copy was checked out with Subversion Plugin.

          M P added a comment -

          Re formatting: I was using the wrong "code", sorry for that. I fixed it.

          If I let the svn plugin check out the code, the job always fails because of the externals. So, what do you suggest?

          M P added a comment - Re formatting: I was using the wrong "code", sorry for that. I fixed it. If I let the svn plugin check out the code, the job always fails because of the externals. So, what do you suggest?

          mpruemm If you configure the svn:externals in a right way, will work.

          Manuel Recena Soto added a comment - mpruemm If you configure the svn:externals in a right way, will work.

          M P added a comment -

          What do you consider to be the "right" way?

          The format we use is the modern, svn 1.5 and later, format. Ideally, I want to specify the revision as well, but due to the problems with svn plugin for Jenkins I removed the revision, hoping that would fix it. But it didn't make any difference.

          To recap, I tried these:

          -rXXX ^/url/to/file localfile
          ^/url/to/file@XXX localfile
          ^/url/to/file localfile

          M P added a comment - What do you consider to be the "right" way? The format we use is the modern, svn 1.5 and later, format. Ideally, I want to specify the revision as well, but due to the problems with svn plugin for Jenkins I removed the revision, hoping that would fix it. But it didn't make any difference. To recap, I tried these: -rXXX ^/url/to/file localfile ^/url/to/file@XXX localfile ^/url/to/file localfile

          mpruemm Could you provide a step by step process so that reproduce the bug?

          Manuel Recena Soto added a comment - mpruemm Could you provide a step by step process so that reproduce the bug?

          M P added a comment -

          OK.

          Set up in subversion: using some working copy, create a file, a new directory, and setup externals, then check in. Note that in the steps below, you must use the actual path to file foo in your repository. Here are the steps:

          echo "foo" >foo
          svn add foo
          svn mkdir bar
          echo "^/path/to/foo foo" > externals
          svn propset -F externals svn:externals bar
          svn ci -m "Setting up file externals for Jenkins"

          As a check, run

          svn update bar

          It should pull in file foo into directory bar.

          When you have that, do the following in Jenkins:

          1. create a new freestyle job.
          2. set version control to check out directory "bar"
          3. configure your svn credentials
          4. Uncheck "ignore externals"
          5. setup additional credentials (as mentioned in JENKINS-21785) for the same repository, using the same credentials.
          6. save this configuration

          Then "Build Now". This produces the error.

          I tried this just now in a different repository, but on the same physical server. The Jenkins credentials (username, password) are the same in both repository, and were stored with Jenkins.

          M P added a comment - OK. Set up in subversion: using some working copy, create a file, a new directory, and setup externals, then check in. Note that in the steps below, you must use the actual path to file foo in your repository. Here are the steps: echo "foo" >foo svn add foo svn mkdir bar echo "^/path/to/foo foo" > externals svn propset -F externals svn:externals bar svn ci -m "Setting up file externals for Jenkins" As a check, run svn update bar It should pull in file foo into directory bar. When you have that, do the following in Jenkins: 1. create a new freestyle job. 2. set version control to check out directory "bar" 3. configure your svn credentials 4. Uncheck "ignore externals" 5. setup additional credentials (as mentioned in JENKINS-21785 ) for the same repository, using the same credentials. 6. save this configuration Then "Build Now". This produces the error. I tried this just now in a different repository, but on the same physical server. The Jenkins credentials (username, password) are the same in both repository, and were stored with Jenkins.

          M P added a comment -

          One more thing: my project is set to "always check out a fresh copy". This reliably reproduces the problem every time. (I haven't tried any other settings, because we always want a fresh checkout for this project.)

          M P added a comment - One more thing: my project is set to "always check out a fresh copy". This reliably reproduces the problem every time. (I haven't tried any other settings, because we always want a fresh checkout for this project.)

          M P added a comment -

          Any news or progress on this?

          I just ran my little test "project" with the svn plugin 2.5.7. Still the same behavior as reported above.

          M P added a comment - Any news or progress on this? I just ran my little test "project" with the svn plugin 2.5.7. Still the same behavior as reported above.

            recena Manuel Recena Soto
            mpruemm M P
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated: