首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当我试图通过共享库在Jenkins中使用GitSCM类签出代码时,为什么会出现堆栈溢出错误?

当我试图通过共享库在Jenkins中使用GitSCM类签出代码时,为什么会出现堆栈溢出错误?
EN

Stack Overflow用户
提问于 2020-03-14 03:01:01
回答 1查看 261关注 0票数 0

当我将使用管道语法生成器生成的GitSCM语法放在一个脚本化的Jenkinsfile中时,它似乎工作得很好。

Jenkinsfile:

代码语言:javascript
复制
node('Maven Agent') {
   stage('Checkout') {
    checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'Github-Creds', url: 'https://github.com/some-user/some-repo.git']]]);
   }
}

但是,当我取出工作台并将其放入groovy共享库函数中,并从Jenkinsfile中调用该函数时,在多次递归运行后,它会给我一个堆栈溢出错误。

修改后的Jenkinsfile:

代码语言:javascript
复制
node('Maven Agent') {
   ci.checkout();
}

共享库函数:

代码语言:javascript
复制
def checkout(Map config=[:], Closure body={}) {
    stage('Check Out') 
    {         
        checkout([$class: 'GitSCM', branches: [[name: '*/master']], doGenerateSubmoduleConfigurations: false, extensions: [], submoduleCfg: [], userRemoteConfigs: [[credentialsId: 'Github-ims-devops-practice', url: 'https://github.com/ims-devops-practice/spec-files.git']]]);
    }
}

控制台日志如下:

代码语言:javascript
复制
[Pipeline] Start of Pipeline
[Pipeline] node
Running on Maven Agent in /home/ec2-user/workspace/springboot-pipeline@5
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Check Out)
[Pipeline] stage
[Pipeline] { (Check Out)
[Pipeline] stage
[Pipeline] { (Check Out)
[Pipeline] stage
[Pipeline] { (Check Out)
[Pipeline] stage
[Pipeline] { (Check Out)
[Pipeline] End of Pipeline
java.lang.StackOverflowError
    at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:131)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1082)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:1040)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:920)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1082)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:1040)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:1019)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:920)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1082)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:1040)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:1019)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:920)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1082)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:1040)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:1019)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:920)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1082)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:1040)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:1019)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:920)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1082)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:1040)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:1019)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:920)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1082)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:1040)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:1019)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:920)
Finished: FAILURE

附注-为方便起见,缩短了控制台日志。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-14 03:19:50

这是因为您的共享库checkout函数正在无休止地调用自己。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60675932

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档