Jenkins 脚本管道不会在函数内部调用 docker

问题描述

我有一个脚本管道,它使用 jenkins 的模板引擎。 “validate_kubernetes”步骤是使用kubeval验证helm包的步骤,可以配置为阻塞管道、跳过该步骤或不阻塞管道。如果调用函数 validateHelm() ,则不会执行 docker 函数。但是如果我在没有函数的情况下调用函数体,它会起作用。

是否有上下文切换之类的,是什么阻止了“docker”被调用

问候

void validateHelm() {
    docker.image('image').inside {
        withEnv(["AWS_CONfig_FILE=${WORKSPACE}/ops/aws-config","HOME=${WORKSPACE}"]) {
            println "login to aws eks ${targets[i]} with profile ${autoDeployAccount}"
            sh "aws eks --region eu-central-1 update-kubeconfig --name ${targets[i]} --profile ${autoDeployAccount}"
            sh 'mkdir -p helm_templates'
            sh "helm template ops/helm/${serviceName} --debug --output-dir helm_templates/"
            println 'run kubeval'
            sh 'kubeval -d helm_templates --ignore-missing-schemas -o json fixtures/*'
        }
    }
}
void call() {
    println 'dockerRegistry: ' + dockerRegistry
    println 'dockerCredentialId: ' + dockerCredentialId
    docker.withRegistry(dockerRegistry,dockerCredentialId) {
        targets = deployTargetEnvs.split(',')
        for (int i = 0; i < targets.length; i++) {
            println('Target: ' + targets[i]);
            if (targets[i] != '') {
                //validate step for every env
                stage("validate helm - ${targets[i]}") {
                    println "validate to ${targets[i]}"
                    if (scanConfig.validate_kubernetes == "block"){
                        println "validate_kubernetes scan configured to be blocking the pipeline"
                        validateHelm()
                    }
                    else if (scanConfig.validate_kubernetes == "skip"){
                        println "validate_kubernetes scan configured to skip"
                    }
                    else {
                        println "validate_kubernetes scan configured to be non-blocking"
                        catchError(buildresult: 'SUCCESS',stageResult: 'FAILURE') {
                            validateHelm()
                        }
                    }
                }
            }
        }
    }
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...