jenkins将AmazonWebServicesCredentialsBinding传递给从属节点

时间:2020-06-29 14:47:38

标签: jenkins jenkins-pipeline

我有一个Jenkins管道,需要在从属节点上运行。我目前在传递由插件withCredentials设置的变量时遇到问题。当我尝试在从属节点上使用它们时,它们是空的,但它们在主节点上起作用。

这是管道代码段。

@freezed
abstract class Union with _$Union {
  List<Some> get someList;
  const factory Union.initial() = Initial;
  const factory Union.loadInProgress() = LoadInProgress;
  const factory Union.loadSuccess(List<Some> some) = LoadSuccess;
}

还有日志

#!groovy
@Library('sharedPipelineLib@master') _

pipeline {
  agent { node
    { label 'jenkins-slave-docker' }
  }
    options {
        skipDefaultCheckout(true)
    }
    environment {
      sonar = credentials('SONAR')
    }
    stages {
      stage('Checkout') {
        steps {
          cleanWs()
          script {
            checkout scm
            }
          }
        }


      stage('Deploy backend') {
        steps {
            script {
                withCredentials([
                        [
                                $class           : 'AmazonWebServicesCredentialsBinding',
                                credentialsId    : 'AWS_ACCOUNT_ID_DEV',
                                accessKeyVariable: 'AWS_ACCESS_KEY_ID_DEV',
                                secretKeyVariable: 'AWS_SECRET_ACCESS_KEY_DEV'
                        ],
                        [
                                $class           : 'AmazonWebServicesCredentialsBinding',
                                credentialsId    : 'AWS_ACCOUNT_ID_DNS',
                                accessKeyVariable: 'AWS_ACCESS_KEY_ID_DNS',
                                secretKeyVariable: 'AWS_SECRET_ACCESS_KEY_DNS'
                        ]
                ]){
                  sh '''
                    echo "$AWS_ACCESS_KEY_ID_DEV\\n$AWS_SECRET_ACCESS_KEY_DEV\\n\\n" | aws configure --profile profile_705229686812
                    echo "$AWS_ACCESS_KEY_ID_DNS\\n$AWS_SECRET_ACCESS_KEY_DNS\\n\\n" | aws configure --profile profile_417752960097

                  '''
                }
            }
        }
      }
    }
}

1 个答案:

答案 0 :(得分:0)

问题再次出在 echo cmd 上。我不得不改用 printf,因为 echo 添加了导致失败的换行符。