简体   繁体   English

groovy 插座在 jenkins 管道中不起作用

[英]groovy socket not working in jenkins pipeline

I have a small groovy script which connect to a tcp server on my pc (windows10)我有一个小的 groovy 脚本,它连接到我的电脑(windows10)上的 tcp 服务器

def Socket socket;
def OutputStream output;

println("Try to connect to 127.0.0.1:4444")

socket = new Socket( "127.0.0.1", 4444);
socket.setSoTimeout(3000);
output = socket.getOutputStream();

If I run this script on freestyle project with execute groovy script build option,如果我使用执行 groovy 脚本构建选项在自由式项目上运行此脚本, 在此处输入图像描述

everything work fine and I succesfully connect to my server一切正常,我成功连接到我的服务器

But If I integrate this script into a pipeline,但是如果我将此脚本集成到管道中, 在此处输入图像描述

the connection is refused!!连接被拒绝!! (even with sandbox desactivated) (即使沙箱停用)

Pipeline] Start of Pipeline
Pipeline] node
unning on LaptopLolo in c:\WK_jenkins\workspace\FolderLOLO\CallGRoovyScript
Pipeline] {
Pipeline] stage
Pipeline] { (Example Build)
Pipeline] script
Pipeline] {
Pipeline] echo
ODE_NAME = LaptopLolo
Pipeline] echo
ry to connect to 127.0.0.1:4444
Pipeline] }
Pipeline] // script
Pipeline] }
Pipeline] // stage
Pipeline] }
Pipeline] // node
Pipeline] End of Pipeline
ava.net.ConnectException: Connection refused (Connection refused)
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:589)
    at java.net.Socket.connect(Socket.java:538)
    at java.net.Socket.<init>(Socket.java:434)
    at java.net.Socket.<init>(Socket.java:211)
    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.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrapNoCoerce.callConstructor(ConstructorSite.java:105)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:60)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:235)
    at com.cloudbees.groovy.cps.sandbox.DefaultInvoker.constructorCall(DefaultInvoker.java:25)
    at WorkflowScript.run(WorkflowScript:17)
    at ___cps.transform___(Native Method)
    at com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.dispatchOrArg(FunctionCallBlock.java:97)
    at com.cloudbees.groovy.cps.impl.FunctionCallBlock$ContinuationImpl.fixArg(FunctionCallBlock.java:83)
    at sun.reflect.GeneratedMethodAccessor462.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.CpsThread.runNextChunk(CpsThread.java:185)
    at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.run(CpsThreadGroup.java:400)
    at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.access$400(CpsThreadGroup.java:96)
    at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:312)
    at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:276)
    at org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService$2.call(CpsVmExecutorService.java:67)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at hudson.remoting.SingleLaneExecutorService$1.run(SingleLaneExecutorService.java:139)
    at jenkins.util.ContextResettingExecutorService$1.run(ContextResettingExecutorService.java:28)
    at jenkins.security.ImpersonatingExecutorService$1.run(ImpersonatingExecutorService.java:68)
    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)
Finished: FAILURE

Does everybody can help me please?请问大家可以帮帮我吗?

Thanks谢谢

Well the Jenkins groovy interpreter has various (and not always obvious) restrictions but to do something as simple as an HTTP(S) or TCP connection, you can always use an sh script and use curl or wget (or bat and their equivalent on Windows), or use the widely used HttpRequest plugin for something like: Well the Jenkins groovy interpreter has various (and not always obvious) restrictions but to do something as simple as an HTTP(S) or TCP connection, you can always use an sh script and use curl or wget (or bat and their equivalent on Windows ),或使用广泛使用的HttpRequest 插件,例如:

echo "Trying to connect to 127.0.0.1:4444"
def response = httpRequest 'http://127.0.0.1:4444/'
echo "Status: "+response.status
echo "Content: "+response.content

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM