当我使用withCredentials时,Jenkins Declarative Pipeline抛出NullPointerException

57hvy0tb  于 2023-08-03  发布在  Jenkins
关注(0)|答案(2)|浏览(139)

我有一个执行一些GIT操作的小管道。我尝试使用ssh作为通信协议,因此我在JenkinsServer中定义了私钥,并且一切正常。

stage('Some Stage'){
      steps{
        withCredentials([[$class: 'SSHUserPrivateKeyBinding', credentialsId: "${params.credentialsId}", usernameVariable: 'GIT_USERNAME']]){
          script{
           // Do some git operations...
          }
       }
  }

字符串
如果我从这里删除withCredentials,代码可以正常工作,但我必须在git push命令中设置硬编码的用户名。我想从凭证中获取用户名。但我的Jenkins总是抛出一个没有任何其他信息的NPE。
我完全迷失了

nc1teljy

nc1teljy1#

试试下面的方法,看看是否有帮助。然后,您可以使用GIT_CREDENTIALS_USR引用凭据中的用户名,使用GIT_CREDENTIALS_PSW引用密码

stage('Some Stage'){

      environment {
                GIT_CREDENTIALS = credentials('<credentialsID>')
      }
      steps{
         script{
           // Do some git operations...
        }
    }
}

字符串

jhdbpxl9

jhdbpxl92#

我也遇到了这个问题,最终意识到,为了避免NPE,即使不使用,也必须包含keyFileVariable。这是必需的,因为用户名和密码是可选的。这会有用的

withCredentials([[$class: 'SSHUserPrivateKeyBinding', credentialsId: cred_id, keyFileVariable: 'KEY_FILE', usernameVariable: 'USERNAME']]) {
   username = USERNAME
}

字符串

相关问题