部署到另一台服务器时如何在Jenkins Pipeline中通过ssh凭据

时间:2020-01-15 06:12:08

标签: jenkins jenkins-pipeline jenkins-groovy

测试工作完成后,我想将代码部署为管道。如何从jenkins管道登录到另一个实例。

首先,我已将我的凭据保存在詹金斯-

Jenkins Credentials

还可以检查连接-

Jenkins SSH Connection Success

在管道脚本中,我正在传递-

!/ usr / bin / groovy

管道{ 代理任何人

stages {

    stage('Build') {
        steps {
            echo 'Building..'
        }
    }

    stage('Test') {
        steps {
            echo 'Testing..'
        }
    }

    stage('Deploy') {
        steps {
            echo 'Deploying....'
            withCredentials([string(credentialsId: '28ebc607-22f5-4fad-91f2-97de971512d3', variable: 'NUSER'),string(credentialsId: '', variable: '')]) {
              sh 'pwd'
              sh 'ls -l'
           }
        }
    }

}

}

我正在获取输出-

Jenkins credentials was excepted

错误-

错误:凭据“ 28ebc607-22f5-4fad-91f2-97de971512d3”的类型为“带有私钥的SSH用户名”,其中应为“ org.jenkinsci.plugins.plaincredentials.StringCredentials” 完成:失败

我做错了什么?最好的方法是什么?有什么建议吗?

2 个答案:

答案 0 :(得分:0)

您可能需要使用ssh-agent plugin并用sshagent (credentials: ['deploy-dev']) { sh 'ssh server do thing' }包裹ssh行

答案 1 :(得分:0)

我有一个类似的用例,并且我正在使用ssh-agent插件。您需要创建SSH类型的凭据,然后使用它包装代码。

sshagent(credentials: ['jenkins']) {
sh ''
}

我已经创建了我的证书,如下所示(使用私钥)

jenkins=[
  username: 'test',
  passphrase: '',
  description : 'SSH credentials',
  type: 'SSH',
  privateKey: ''
]
相关问题