为什么这些注入的变量不能进入我的groovy类?

时间:2017-11-20 02:03:12

标签: jenkins groovy jenkins-plugins jenkins-pipeline

在我的管道中,我正在注入aws凭据:

withCredentials([[$class: 'AmazonWebServicesCredentialsBinding',
credentialsId: '89h9sfh8shf98shf98he9f8sf',
accessKeyVariable: 'AWS_ACCESS_KEY_ID',
secretKeyVariable: 'AWS_SECRET_ACCESS_KEY']]) {

    sh 'printenv'

    echo myFunc.myMeth('blah','sdjlfkdf')

}

myFunc看起来像这样:

class myFunc {
    static Object myMeth (String param1, String param2){    
        def env = System.getenv()
        //Print all the environment variables.
        env.each{
            println it
        }

        def ebClient = new AmazonDynamoDBClientBuilder()
            .withCredentials(new EnvironmentVariableCredentialsProvider())
            .build()

    }
}

查看sh 'printenv'的输出,我看到AWS_ACCESS_KEY_ID和AWS_SECRET_ACCESS_KEY被注入。

但是在myFunc里面我试着回复一下myFunc有权访问的内容我没看到那些变量和aws api抱怨:

Unable to load AWS credentials from environment variables (AWS_ACCESS_KEY_ID (or AWS_ACCESS_KEY) and AWS_SECRET_KEY (or AWS_SECRET_ACCESS_KEY))

这是设计的吗? myFunc是否已被隔离,我需要更改其范围或其他内容?

为什么sh(和其他步骤)可以访问由withCredtials注入的这些变量,但我的groovy函数没有?

我已经将它们作为纯文本传递并转发给aws api。这很臭,因为它们没有屏蔽控制台输出,我还必须在myFunc中使用B​​asicAWSCredentials手动应用它们:

myFunc.myMeth('blah','sdjlfkdf',env.AWS_ACCESS_KEY_ID,env.AWS_SECRET_ACCESS_KEY)

0 个答案:

没有答案