首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >詹金斯共同失败

詹金斯共同失败
EN

Stack Overflow用户
提问于 2017-12-14 10:25:57
回答 1查看 1.1K关注 0票数 0

我正面临着詹金斯共享图书馆的问题。由于以下错误,它失败了。

代码语言:javascript
代码运行次数:0
运行
复制
an exception which occurred:
    in field org.codehaus.groovy.control.MultipleCompilationErrorsException.collector
    in object org.codehaus.groovy.control.MultipleCompilationErrorsException@545ac2e4
    in field com.cloudbees.groovy.cps.impl.BlockScopeEnv.locals
    in object com.cloudbees.groovy.cps.impl.BlockScopeEnv@633a4023
    in field com.cloudbees.groovy.cps.impl.CallEnv.caller
    in object com.cloudbees.groovy.cps.impl.FunctionCallEnv@4fc67d86
    in field com.cloudbees.groovy.cps.Continuable.e
    in object com.cloudbees.groovy.cps.Continuable@398d975c
    in field org.jenkinsci.plugins.workflow.cps.CpsThread.program
    in object org.jenkinsci.plugins.workflow.cps.CpsThread@45695fe5
    in field org.jenkinsci.plugins.workflow.cps.CpsBodyExecution.thread
    in object org.jenkinsci.plugins.workflow.cps.CpsBodyExecution@584b34fe
    in field org.jenkinsci.plugins.workflow.cps.CpsBodyExecution$SuccessAdapter.this$0
    in object org.jenkinsci.plugins.workflow.cps.CpsBodyExecution$SuccessAdapter@20f23f9f
Caused: java.io.NotSerializableException:org.codehaus.groovy.control.ErrorCollector
    at org.jboss.marshalling.river.RiverMarshaller.doWriteObject(RiverMarshaller.java:860)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteFields(RiverMarshaller.java:1032)
    at org.jboss.marshalling.river.RiverMarshaller.doWriteSerializableObject(RiverMarshaller.java:988)

Groovy代码

代码语言:javascript
代码运行次数:0
运行
复制
import org.com.*

def call(string project, string repo){
    gt = new git(this, project, repo)
    gt.gitclone('pip','ospatchingpipeline' )
    git(this, project)
}

源类

代码语言:javascript
代码运行次数:0
运行
复制
package org.com.*

/**
 * Created by mishrav on 12/14/2017.
 */
class git implements Serializable {
    def project
    def repo
    git(string project, string repo) {
        this.project = project
        this.repo = repo
    }
    def gitclone(project, repo){
        echo(" cloning ${project}")
        git url: "ssh://git@bitbucket:7999/${project}/${repo}.git"
    }
}

管道代码

代码语言:javascript
代码运行次数:0
运行
复制
@Library('pipelineLibrary') _
import java.util.regex.Pattern
//def lib = library("pipelineLibrary").com.clsa.scm.git()
//library identifier: 'pipelineLibrary@master', retriever: modernSCM([$class: 'GitSCMSource',remote: 'ssh://git@bitbucket:7999/pip/pipelinelibrary.git',credentialsId: 'my-private-key'])

pipeline {
    agent any
    stages{
        stage ('cleaning workspace'){
            steps{
                script{
                    checkoutScm("ospatchingpipeline")
                    }
                }
            }
        }
}  

我不确定在上传之前是否需要编译这段代码。

EN

回答 1

Stack Overflow用户

发布于 2019-11-25 21:31:54

当您使用未实现可序列化接口的函数(访问要导入的类的对象)时,会发生此错误。

当我们由于下列功能而出现此问题时:

代码语言:javascript
代码运行次数:0
运行
复制
@NonCPS
private static boolean isDebugOn (ParamType param1) { ...

删除static并更改它以消除此错误:

代码语言:javascript
代码运行次数:0
运行
复制
@NonCPS
private boolean isDebugOn (ParamType param1) { ...

似乎是@NonCPSstatic的结合导致了这个错误。

当您有使用不可序列化对象的方法时,@NonCPS注释非常有用。通常,您在管道脚本中创建的所有对象都必须是可序列化的(原因是Jenkins必须能够序列化脚本的状态,以便它可以暂停并存储在磁盘上)。

当您将@NonCPS放在一个方法上时,Jenkins将一次执行整个方法,而不需要暂停。此外,不允许从@NonCPS注释方法中引用任何管道步骤或CPS转换方法。有关这方面的更多信息可以在这里找到。

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

https://stackoverflow.com/questions/47811025

复制
相关文章

相似问题

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