K.K*_*oli 5 jenkins docker-compose
我正在尝试使用 jenkinsfile 在一个非常简单的 jenkins 作业中运行 docker-compose 构建。
\n我正在使用 scm 的管道来获取源代码,如下所示:
\n屏幕截图\n
我使用的jenkins文件如下:
\nimport jenkins.model.*\njenkins = Jenkins.instance\n\nnode{\n\n stage(\xe2\x80\x98Build\xe2\x80\x99) {\n\n sh \xe2\x80\x98docker-compose -f /var/lib/jenkins/workspace/Docker-compose-test/heb_acceptance_test/docker-compose.yml up --build\xe2\x80\x99 \n }\n\n}\nRun Code Online (Sandbox Code Playgroud)\n但构建一直失败。这是失败日志
\n> git checkout -f d4d004337dc5ffa2bdcfb21e4c0d93c468289311\nCommit message: "just trying syntax"\n > git rev-list --no-walk d4d004337dc5ffa2bdcfb21e4c0d93c468289311 # timeout=10\nRunning in Durability level: MAX_SURVIVABILITY\n[Pipeline] node\n[Pipeline] End of Pipeline\nan exception which occurred:\n in field groovy.lang.Closure.delegate\n in object org.jenkinsci.plugins.workflow.cps.CpsClosure2@64757627\n in field org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.closures\n in object org.jenkinsci.plugins.workflow.cps.CpsThreadGroup@357f33e2\n in object org.jenkinsci.plugins.workflow.cps.CpsThreadGroup@357f33e2\nCaused: java.io.NotSerializableException: hudson.model.Hudson\n at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:860)\n at org.jboss.marshalling.river.BlockMarshaller.doWriteObject(BlockMarshaller.java:65)\n at org.jboss.marshalling.river.BlockMarshaller.writeObject(BlockMarshaller.java:56)\n at org.jboss.marshalling.MarshallerObjectOutputStream.writeObjectOverride(MarshallerObjectOutputStream.java:50)\n at org.jboss.marshalling.river.RiverObjectOutputStream.writeObjectOverride(RiverObjectOutputStream.java:179)\n at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:344)\n at java.util.LinkedHashMap.internalWriteEntries(LinkedHashMap.java:333)\n at java.util.HashMap.writeObject(HashMap.java:1363)\n at sun.reflect.GeneratedMethodAccessor861.invoke(Unknown Source)\n at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n at java.lang.reflect.Method.invoke(Method.java:498)\n at org.jboss.marshalling.reflect.SerializableClass.callWriteObject(SerializableClass.java:273)\n at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:976)\n at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:967)\n at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:854)\n at org.jboss.marshalling.river.BlockMarshaller.doWriteObject(BlockMarshaller.java:65)\n at org.jboss.marshalling.river.BlockMarshaller.writeObject(BlockMarshaller.java:56)\n at org.jboss.marshalling.MarshallerObjectOutputStream.writeObjectOverride(MarshallerObjectOutputStream.java:50)\n at org.jboss.marshalling.river.RiverObjectOutputStream.writeObjectOverride(RiverObjectOutputStream.java:179)\n at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:344)\n at com.cloudbees.groovy.cps.SerializableScript.writeObject(SerializableScript.java:26)\n at sun.reflect.GeneratedMethodAccessor950.invoke(Unknown Source)\n at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n at java.lang.reflect.Method.invoke(Method.java:498)\n at org.jboss.marshalling.reflect.SerializableClass.callWriteObject(SerializableClass.java:273)\n at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:976)\n at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:967)\n at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:967)\n at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:854)\n at org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1032)\n at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:988)\n at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:967)\n at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:967)\n at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:854)\n at org.jboss.marshalling.river.BlockMarshaller.doWriteObject(BlockMarshaller.java:65)\n at org.jboss.marshalling.river.BlockMarshaller.writeObject(BlockMarshaller.java:56)\n at org.jboss.marshalling.MarshallerObjectOutputStream.writeObjectOverride(MarshallerObjectOutputStream.java:50)\n at org.jboss.marshalling.river.RiverObjectOutputStream.writeObjectOverride(RiverObjectOutputStream.java:179)\n at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:344)\n at java.util.HashMap.internalWriteEntries(HashMap.java:1790)\n at java.util.HashMap.writeObject(HashMap.java:1363)\n at sun.reflect.GeneratedMethodAccessor861.invoke(Unknown Source)\n at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\n at java.lang.reflect.Method.invoke(Method.java:498)\n at org.jboss.marshalling.reflect.SerializableClass.callWriteObject(SerializableClass.java:273)\n at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:976)\n at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:854)\n at org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1032)\n at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:988)\n at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:854)\n at org.jboss.marshalling.AbstractObjectOutput.writeObject(AbstractObjectOutput.java:58)\n at org.jboss.marshalling.AbstractMarshaller.writeObject(AbstractMarshaller.java:111)\n at org.jenkinsci.plugins.workflow.support.pickles.serialization.RiverWriter.lambda$writeObject$0(RiverWriter.java:144)\n at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.GroovySandbox.runInSandbox(GroovySandbox.java:108)\n at org.jenkinsci.plugins.workflow.support.pickles.serialization.RiverWriter.writeObject(RiverWriter.java:143)\n at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.saveProgram(CpsThreadGroup.java:482)\n at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.saveProgram(CpsThreadGroup.java:458)\n at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.saveProgramIfPossible(CpsThreadGroup.java:445)\n at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.run(CpsThreadGroup.java:372)\n at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup.access$200(CpsThreadGroup.java:83)\n at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:244)\n at org.jenkinsci.plugins.workflow.cps.CpsThreadGroup$2.call(CpsThreadGroup.java:232)\n at org.jenkinsci.plugins.workflow.cps.CpsVmExecutorService$2.call(CpsVmExecutorService.java:64)\n at java.util.concurrent.FutureTask.run(FutureTask.java:266)\n at hudson.remoting.SingleLaneExecutorService$1.run(SingleLaneExecutorService.java:131)\n at jenkins.util.ContextResettingExecutorService$1.run(ContextResettingExecutorService.java:28)\n at jenkins.security.ImpersonatingExecutorService$1.run(ImpersonatingExecutorService.java:59)\n at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)\n at java.util.concurrent.FutureTask.run(FutureTask.java:266)\n at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)\n at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)\n at java.lang.Thread.run(Thread.java:748)\nFinished: FAILURE\nRun Code Online (Sandbox Code Playgroud)\n我尝试运行该命令,并将与 -fdocker-compose up链接起来,但得到了相同的结果,所以看来我在这里遗漏了一些基本的东西。docker-compose.yml
任何帮助将不胜感激,谢谢。
\n通过稍微更改 jenkinsfile 语法
\npipeline {\n \n agent any\n \n stages {\n stage(\xe2\x80\x98Build\xe2\x80\x99) {\n steps {\n sh '/usr/local/bin/docker-compose up --build'\n }\n }\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n它现在工作正常,似乎我使用的 jenkinsfile 语法已经过时了。
\n小智 3
这是因为您将 Jenkins 实例分配给管道内的变量。
Jenkins 假设作业可以中断、暂停和恢复,并且要实现这一点,需要所有管道数据可序列化。
Jenkins 实例不是:
Caused: java.io.NotSerializableException: hudson.model.Hudson
Run Code Online (Sandbox Code Playgroud)
您可能不需要导入 jenkins 模型并使用 Jenkins 实例。没有这些,您的管道也将正常工作。
但是,如果您需要在 jenkins 实例上执行一些操作,您可以使用NonCPS注释。
import jenkins.model.Jenkins
// pipeline
node {
def bar = foo()
}
@NonCPS
def foo() {
jenkins = Jenkins.instance
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10384 次 |
| 最近记录: |