title: Proxy configuration for Jenkins not working for groovy pipeline scripts?
body: <p>Currently, I am facing the issue that I am trying to set up the S4SDK jenkins pipeline behind a proxy.</p>
  
  <p>For this I adjusted the configuration in the server.cfg accordingly and it also shows in the Jenkins server log, that this configuration is used:</p>
  
  <pre><code>Setting Jenkins network proxy to &lt;IP of proxy&gt;:&lt;port of proxy&gt; without using credentials. No proxy patterns: [*localhost, *127.0.0.1, *s4sdk-nexus]
  </code></pre>
  
  <p>However during execution of the pipeline, more specifically when executing the s4sdkQualityChecks at the end the checkHystrix.groovy script uses grapes to pull another dependency:</p>
  
  <pre><code>@Grab('com.xlson.groovycsv:groovycsv:1.1')
  </code></pre>
  
  <p>However this dependency cannot be resolved and the following stacktrace appears:</p>
  
  <pre><code>org.jenkinsci.plugins.workflow.cps.CpsCompilationErrorsException: startup failed:
  General error during conversion: Error grabbing Grapes -- [unresolved dependency: com.xlson.groovycsv#groovycsv;1.1: not found]
  
  java.lang.RuntimeException: Error grabbing Grapes -- [unresolved dependency: com.xlson.groovycsv#groovycsv;1.1: not found]
      at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
      at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
      at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
      at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
      at org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:83)
      at org.codehaus.groovy.reflection.CachedConstructor.doConstructorInvoke(CachedConstructor.java:77)
      at org.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrap.callConstructor(ConstructorSite.java:84)
      at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:247)
      at groovy.grape.GrapeIvy.getDependencies(GrapeIvy.groovy:424)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:498)
      at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
      at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
      at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1213)
      at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1022)
      at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:69)
      at groovy.grape.GrapeIvy.resolve(GrapeIvy.groovy:571)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:498)
      at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
      at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
      at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1213)
      at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1022)
      at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:69)
      at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:190)
      at groovy.grape.GrapeIvy.resolve(GrapeIvy.groovy:538)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:498)
      at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
      at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
      at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1213)
      at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1022)
      at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:69)
      at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:182)
      at groovy.grape.GrapeIvy.grab(GrapeIvy.groovy:256)
      at groovy.grape.Grape.grab(Grape.java:167)
      at groovy.grape.GrabAnnotationTransformation.visit(GrabAnnotationTransformation.java:378)
      at org.codehaus.groovy.transform.ASTTransformationVisitor$3.call(ASTTransformationVisitor.java:321)
      at org.codehaus.groovy.control.CompilationUnit.applyToSourceUnits(CompilationUnit.java:943)
      at org.codehaus.groovy.control.CompilationUnit.doPhaseOperation(CompilationUnit.java:605)
      at org.codehaus.groovy.control.CompilationUnit.processPhaseOperations(CompilationUnit.java:581)
      at org.codehaus.groovy.control.CompilationUnit.compile(CompilationUnit.java:558)
      at groovy.lang.GroovyClassLoader.doParseClass(GroovyClassLoader.java:298)
      at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:268)
      at groovy.lang.GroovyClassLoader.parseClass(GroovyClassLoader.java:254)
      at groovy.lang.GroovyClassLoader.recompile(GroovyClassLoader.java:761)
      at groovy.lang.GroovyClassLoader.loadClass(GroovyClassLoader.java:718)
      at groovy.lang.GroovyClassLoader.loadClass(GroovyClassLoader.java:787)
      at java.lang.ClassLoader.loadClass(ClassLoader.java:411)
      at org.jenkinsci.plugins.workflow.cps.CpsGroovyShell$TimingLoader.loadClass(CpsGroovyShell.java:161)
      at java.lang.ClassLoader.loadClass(ClassLoader.java:411)
      at groovy.lang.GroovyClassLoader.loadClass(GroovyClassLoader.java:677)
      at groovy.lang.GroovyClassLoader.loadClass(GroovyClassLoader.java:787)
      at groovy.lang.GroovyClassLoader.loadClass(GroovyClassLoader.java:775)
      at org.jenkinsci.plugins.workflow.cps.global.UserDefinedGlobalVariable.getValue(UserDefinedGlobalVariable.java:57)
      at org.jenkinsci.plugins.workflow.cps.CpsScript.invokeMethod(CpsScript.java:113)
      at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:48)
      at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
      at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
      at com.cloudbees.groovy.cps.sandbox.DefaultInvoker.methodCall(DefaultInvoker.java:20)
      at com.cloudbees.groovy.cps.impl.ContinuationGroup.methodCall(ContinuationGroup.java:57)
      at com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.dispatchOrArg(FunctionCallBlock.java:109)
      at com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.fixName(FunctionCallBlock.java:77)
      at sun.reflect.GeneratedMethodAccessor259.invoke(Unknown Source)
      at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      at java.lang.reflect.Method.invoke(Method.java:498)
      at com.cloudbees.groovy.cps.impl.ContinuationPtr$ContinuationImpl.receive(ContinuationPtr.java:72)
      at com.cloudbees.groovy.cps.impl.ConstantBlock.eval(ConstantBlock.java:21)
      at com.cloudbees.groovy.cps.Next.step(Next.java:83)
      at com.cloudbees.groovy.cps.Continuable$1.call(Continuable.java:174)
      at com.cloudbees.groovy.cps.Continuable$1.call(Continuable.java:163)
      at org.codehaus.groovy.runtime.GroovyCategorySupport$ThreadCategoryInfo.use(GroovyCategorySupport.java:129)
      at org.codehaus.groovy.runtime.GroovyCategorySupport.use(GroovyCategorySupport.java:268)
      at com.cloudbees.groovy.cps.Continuable.run0(Continuable.java:163)
      at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.access$001(SandboxContinuable.java:18)
      at org.jenkinsci.plugins.workflow.cps.SandboxContinuable.run0(SandboxContinuable.java:51)
      at org.jenkinsci.plugins.workflow.cps.CpsThread.runNextChunk(CpsThread.java:186)
      at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.run(CpsThreadGroup.java:370)
      at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.access$200(CpsThreadGroup.java:93)
      at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:282)
      at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:270)
      at org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService$2.call(CpsVmExecutorService.java:64)
      at java.util.concurrent.FutureTask.run(FutureTask.java:266)
      at hudson.remoting.SingleLaneExecutorService$1.run(SingleLaneExecutorService.java:131)
      at jenkins.util.ContextResettingExecutorService$1.run(ContextResettingExecutorService.java:28)
      at jenkins.security.ImpersonatingExecutorService$1.run(ImpersonatingExecutorService.java:59)
      at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
      at java.util.concurrent.FutureTask.run(FutureTask.java:266)
      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
      at java.lang.Thread.run(Thread.java:748)
  </code></pre>
  
  <p>The proxy itself is also configured for the maven execution within the pipeline so it should in principal work. Not sure if I missed another configuration option, but haven't found any so far. Any advice on this would be highly appreciated.</p>
  
  <p><strong>Update</strong></p>
  
  <p>Current failing step is now the checkServices.groovy step with the following log trace:</p>
  
  <pre><code>16:19:13  --- BEGIN LIBRARY STEP: checkServices.groovy ---
  [Pipeline] httpRequest
  16:19:13  HttpMethod: GET
  16:19:13  URL: https://api.sap.com/odata/1.0/catalog.svc/ContentEntities.ContentPackages('SAPS4HANACloud')/Artifacts?$format=json&amp;$select=Name
  16:19:13  Sending request to url: https://api.sap.com/odata/1.0/catalog.svc/ContentEntities.ContentPackages('SAPS4HANACloud')/Artifacts?$format=json&amp;$select=Name
  16:19:13  Treating UnknownHostException(http://[PROXY_IP]: Name or service not known) as 404 Not Found
  [Pipeline] error
  [Pipeline] echo
  16:19:13  ----------------------------------------------------------
  16:19:13  --- ERROR OCCURRED IN LIBRARY STEP: checkServices
  16:19:13  ----------------------------------------------------------
  16:19:13  
  16:19:13  FOLLOWING PARAMETERS WERE AVAILABLE TO THIS STEP:
  16:19:13  ***
  16:19:13  [script:Script1@6e29ff5b, nonErpDestinations:null, customODataServices:null]
  16:19:13  ***
  16:19:13  
  16:19:13  ERROR WAS:
  16:19:13  ***
  16:19:13  hudson.AbortException: Failed to download the list of available services from API Business Hub (https://api.sap.com/). Please check if your Jenkins can reach this web resource.
  16:19:13  Exception: java.lang.IllegalStateException: hudson.AbortException: Fail: the returned code 404 is not in the accepted range: [[100?399]]
  16:19:13  ***
  16:19:13  
  16:19:13  
  [Pipeline] echo
  16:19:14  --- END LIBRARY STEP: checkServices.groovy ---
  </code></pre>