简体   繁体   中英

ssh-agent not working on jenkins pipeline

I am newbie and trying to implement CI/CD for my hello world reactive spring project. After releasing the image to docker repo, the next step is to connect to aws ec2 and run the created image. I have already installed ssh agen plugin and tested positive in the ssh connection configured in Mangejenkins->configuration system->ssh client.

Also My system env variabes has path=C:\Windows\System32\OpenSSH\ssh-agent.exe

In the last step I am getting:

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

My Pipelien code:

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}"
                }
        }
    }

}}

The build-in SSH-agent of Windows is incompatible with Jenkins SSH-Agent plugin.

I'm using the SSH-agent from the Git installation. Make sure to insert the directory(.) path of Git ssh-agent,exe before any other path. to prevent the use of Windows SSH-agent.

With a default Git for Windows installation, you can set the PATH environment variable like this:

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

For me it didn't work to set the env var from within Jenkins UI. I added it through the settings app. When doing so, make sure to insert it before "%SystemRoot%\system32\OpenSSH".

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM