如何在詹金斯管道中使用Groovy解决无方法签名

时间:2019-03-20 23:04:08

标签: groovy jenkins-pipeline

我有多行脚本

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
}

就像在我的常规文件中一样。 jenkins正在调用它,但出现此错误。

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()

我真是茫然,为什么会这样。我已经浏览过类似的问题,但似乎与我的问题不符

1 个答案:

答案 0 :(得分:0)

您需要在stripMargin()之前调用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}")