【问题标题】:ssh-agent not working on jenkins pipelinessh-agent 不适用于詹金斯管道
【发布时间】:2020-08-26 08:21:29
【问题描述】:

我是新手,正在尝试为我的 hello world 响应式 Spring 项目实施 CI/CD。将镜像发布到 docker repo 后,下一步是连接到 aws ec2 并运行创建的镜像。我已经安装了 ssh agen 插件并在 Mangejenkins->configuration system->ssh client 中配置的 ssh 连接中测试为阳性。

我的系统环境变量也有 path=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

我的管道代码:

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

}}

【问题讨论】:

    标签: docker jenkins amazon-ec2 jenkins-pipeline


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 答案中最重要的部分是更改Windows系统设置中的PATH环境变量,如果Jenkins作为服务启动则重启Jenkins。在管道脚本中或使用作业配置中的环境注入插件更改它不起作用。
    最近更新 更多