首页 > 解决方案 > 如何在詹金斯管道中使用 groovy 解决没有方法签名的问题

问题描述

我有一个多行脚本

sh """
        SCRIPT_BRANCH=${SCRIPT_BRANCH:-develop}
        curl -o ${LIQUIBASE_CI_SCRIPT} -H "Authorization: token ${GITHUB_AUTH_TOKEN}" --header ${SCRIPT_BRANCH}/src/shell/branch_cut_liquibase_gen.sh
        chmod +x ${LIQUIBASE_CI_SCRIPT}
        curl -o ${LIQUIBASE_GEN_SCRIPT} -H "Authorization: token ${GITHUB_AUTH_TOKEN}" --header ${SCRIPT_BRANCH}/src/shell/liquibase_generation.sh
        chmod +x ${LIQUIBASE_GEN_SCRIPT}
        curl -o ${LIQUIBASE_TRANSFORM_SCRIPT} ${SCRIPT_BRANCH}/src/python/liquibase_transform.py
        chmod +x ${LIQUIBASE_TRANSFORM_SCRIPT} 
        ${LIQUIBASE_CI_SCRIPT}
    """.stripMargin()

    email(${EMAIL}, ${DEFAULT_CONTENT})

def build = bareBuild() {
    buildAction = branchCutAction
}

就像在我的 groovy 文件中一样。它被詹金斯调用,我收到了这个错误。

hudson.remoting.ProxyException: groovy.lang.MissingMethodException: No signature of method: java.lang.String.negative() is applicable for argument types: () values: []Possible solutions: notify(), normalize(), next()

我真的不知道为什么会这样。我查看了类似的问题,但似乎没有什么与我的问题相符

标签: groovyjenkins-pipeline

解决方案


您需要调用stripMargin()previous to sh,从而将它们分成两个代码块。

def cmd = """
        SCRIPT_BRANCH=${SCRIPT_BRANCH:-develop}
        curl -o ${LIQUIBASE_CI_SCRIPT} -H "Authorization: token ${GITHUB_AUTH_TOKEN}" --header ${SCRIPT_BRANCH}/src/shell/branch_cut_liquibase_gen.sh
        chmod +x ${LIQUIBASE_CI_SCRIPT}
        curl -o ${LIQUIBASE_GEN_SCRIPT} -H "Authorization: token ${GITHUB_AUTH_TOKEN}" --header ${SCRIPT_BRANCH}/src/shell/liquibase_generation.sh
        chmod +x ${LIQUIBASE_GEN_SCRIPT}
        curl -o ${LIQUIBASE_TRANSFORM_SCRIPT} ${SCRIPT_BRANCH}/src/python/liquibase_transform.py
        chmod +x ${LIQUIBASE_TRANSFORM_SCRIPT} 
        ${LIQUIBASE_CI_SCRIPT}
    """

sh "${cmd}"

email("${EMAIL}", "${DEFAULT_CONTENT}")

推荐阅读