ssh-agent在詹金斯管道上不起作用

时间:2020-05-10 21:07:56

标签: docker jenkins amazon-ec2 jenkins-pipeline

我是新手,正在尝试为我的hello world反应性春季项目实施CI / CD。将映像释放到docker repo之后,下一步是连接到AWS ec2并运行创建的映像。我已经安装了ssh agen插件,并在Mangejenkins->配置系统-> ssh客户端中配置的ssh连接中测试了阳性。

我的系统环境变量的路径也为C:\ Windows \ System32 \ OpenSSH \ ssh-agent.exe

在最后一步,我得到了:

Could not find ssh-agent: IOException: Cannot run program "ssh-agent": CreateProcess error=2, The system cannot find the file specified
Check if ssh-agent is installed and in PATH
[ssh-agent] FATAL: Could not find a suitable ssh-agent provider

我的Pipelien代码:

pipeline {
agent any
tools {
    maven 'maven'
    jdk 'jdk1.8'
}
environment {
    registry ="my-registry"
    registryCredential=credentials('docker-credentials')
}
stages {
    stage('SCM') {
                steps {
                         git branch: 'master',
                             credentialsId:  'JenkinsGitlab',
                             url:'https://www.gitlab.com/my-repo/panda-app'
                }
     }
    stage('Build') {
        steps {
            bat 'mvn clean package spring-boot:repackage'
        }
    }
    stage('Dockerize') {
        steps {
            bat "docker build -t ${registry}:${BUILD_NUMBER} ."
        }

    }
    stage('Docker Login') {
        steps{
            bat "docker login -u ${registryCredential_USR} -p ${registryCredential_PSW}"
        }
    }
    stage('Release to Docker hub') {
        steps{
            bat "docker push ${registry}:${BUILD_NUMBER}"                
        }
    }
    stage('Deploy to AWS') {
        steps {
            sshagent(['panda-ec2']) {
                    bat  "ssh -o StrictHostKeyChecking=no ubuntu@my-aws-host sudo docker run -p 8080:8080 ${registry}:${BUILD_NUMBER}"
                }
        }
    }

}}

1 个答案:

答案 0 :(得分:2)

Windows的内置SSH代理与Jenkins SSH-Agent插件不兼容。

我正在使用Git安装中的SSH代理。请确保在其他任何路径之前插入Git ssh-agent.exe的directory(!)路径,以防止使用Windows SSH-agent。

使用默认的Windows Git安装,您可以像这样设置PATH环境变量:

path=c:\Program Files\Git\usr\bin;%path%

对我来说,在Jenkins UI中设置环境变量是行不通的。我通过设置应用程序添加了它。这样做时,请确保将其插入“%SystemRoot%\ system32 \ OpenSSH”之前。