当前位置: 首页 > 面试题库 >

Jenkins ssh-agent启动,然后在管道构建中立即停止

阚砚文
2023-03-14
问题内容

我有一个简单的jenkins管道构建,这是我的jenkinsfile:

pipeline {
    agent any
    stages {
        stage('deploy-staging') {
            when {
                branch 'staging'
            }
            steps {
                sshagent(['my-credentials-id']) {
                    sh('git push joe@repo:project')
                }
            }
        }
    }
}

我正在使用sshagent推送到远程服务器上的git repo。我已经创建了指向Jenkins主〜/ .ssh中的私钥文件的凭据。

运行构建时,得到以下输出(我用*替换了一些敏感信息):

[ssh-agent] Using credentials *** (***@*** ssh key)
[ssh-agent] Looking for ssh-agent implementation...
[ssh-agent]   Exec ssh-agent (binary ssh-agent on a remote machine)
$ ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-cjbm7oVQaJYk/agent.11558
SSH_AGENT_PID=11560
$ ssh-add ***
Identity added: ***
[ssh-agent] Started.
[Pipeline] {
[Pipeline] sh
$ ssh-agent -k
unset SSH_AUTH_SOCK;
unset SSH_AGENT_PID;
echo Agent pid 11560 killed;
[ssh-agent] Stopped.
[TDBNSSBFW6JYM3BW6AAVMUV4GVSRLNALY7TWHH6LCUAVI7J3NHJQ] Running shell script
+ git push joe@repo:project
Host key verification failed.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

如您所见,ssh-agent启动,之后立即停止,然后运行git push命令。奇怪的是,它曾经正确地工作过一次,但这似乎是完全随机的。

我对詹金斯还是很陌生-我缺少明显的东西吗?任何帮助表示赞赏,谢谢。

编辑:如果有帮助,我正在运行多分支管道。


问题答案:

我最近有一个类似的问题,尽管它在docker容器中。日志给人的印象是ssh-agent退出得太早,但是实际上问题是我忘记了将git服务器添加到已知主机。

我建议将ssh-ing到您的jenkins master上,并尝试执行与ssh-agent(cli)管道相同的步骤。然后,您将看到问题出在哪里。

例如:

eval $(ssh-agent -s)
ssh-add ~/yourKey
git clone

如在help.github.com上解释的

更新:这里是一个用于添加knownHosts(如果尚未添加)的实用程序:

/**
 * Add hostUrl to knownhosts on the system (or container) if necessary so that ssh commands will go through even if the certificate was not previously seen.
 * @param hostUrl
 */
void tryAddKnownHost(String hostUrl){
    // ssh-keygen -F ${hostUrl} will fail (in bash that means status code != 0) if ${hostUrl} is not yet a known host
    def statusCode = sh script:"ssh-keygen -F ${hostUrl}", returnStatus:true
    if(statusCode != 0){
        sh "mkdir -p ~/.ssh"
        sh "ssh-keyscan ${hostUrl} >> ~/.ssh/known_hosts"
    }
}


 类似资料:
  • 我在LibGDX做一个项目。这是一款2d平台游戏。你可以说这就像超级马里奥。 这就是我如何把我的球员移到右边: 当我离开钥匙时,玩家仍然在移动一点。(我想他的身体上仍然有“线性冲动”的力量)。 我怎样才能让它停下来? 我的问题可能很简单:拿着钥匙,在LibGDX上向一个方向移动身体的最佳方式是什么。当我离开钥匙时,玩家立即停止。 BDW——我尝试过“setTransform”,当身体触摸其他物体时

  • 我在我的工作区中使用STS IDE运行了几个Spring Boot应用程序,在我对其中一个项目进行maven更新后,每个项目都在应用程序启动过程后立即停止。我甚至创建了一个最小的例子,只是为了开始一些事情,同样的事情发生了。 这是我的pom.xml 即使是那些入门示例也会在启动后立即停止。我会非常感谢这里的一些帮助。 编辑:正如Alexandru Marina在评论中所说,我使用的是快照而不是稳定

  • 我想在设备重新启动后与启动通知(如消息、Viber通知、Whatsapp等)并排启动锁定屏幕活动。如何做到这一点??.我已经制作了一个广播接收器,它接收引导完成操作,然后启动一个服务,该服务再次用intent.action_screen_off和intent.action_screen_on意图过滤器注册相同的接收器,该接收器启动锁定屏幕活动。以下是我的代码: AndroidManifest.xm

  • 问题内容: 我需要在树莓派的启动程序上启动Java应用程序,但我不知道如何? 我检索了PbxMan的脚本以将其作为服务运行:http://codingdict.com/questions/42510 我制作了一个简单的脚本,可以在后台启动该应用程序 我在重新启动时将其推送到了crontab中… 我在main的第一行和addShutdownHook()中播放声音。所以我可以听到,每次应用程序启动后立

  • 问题内容: 摆脱詹金斯管道中的奇怪错误 詹金斯管道的相应阶段是 为何无法在Docker容器中启动进程是什么原因?关于如何进一步调试的任何指示也很有帮助。 问题答案: 该问题是由Jenkins持久任务插件v1.31中引入的一些重大更改引起的。 资源: https://issues.jenkins-ci.org/browse/JENKINS-59907和 https://github.com/jenk

  • 问题内容: 我需要在Jenkins上禁用“立即构建”选项,我的工作是构建分支并将SNAPSHOT部署到服务器。我需要使用Maven版本的生产作业,该作业只能生成稳定的版本,但是对于此作业,我认为最好的方法是禁用“立即构建”选项并仅使用Maven版本。那我可以这样做吗? 问题答案: 使用授权策略插件禁止运行作业。如果配置正确- 没有人会看到“立即构建”按钮。另一个选择是Job Restriction