通过Jenkins触发slave节点检出代码失败,但直接在slave上执行命令成功

问题描述 投票:0回答:1

我有一个 Jenkins 管道任务来编译代码并将其打包以便在从节点上执行。流水线任务脚本如下:

scmVars = checkout([$class: 'GitSCM',
                        branches: [[name: commitID]],
                        browser: bitbucketServer("http://***/projects/projectname/repos/projectname/"),
                        extensions: [[$class: 'CloneOption', timeout: 1200, honorRefspec: true],
                                    [$class: 'BuildChooserSetting',
                                        buildChooser: [$class: 'DefaultBuildChooser']],
                                    [$class: 'RelativeTargetDirectory',
                                    relativeTargetDir: '{projectname}'],
                                    [$class: 'LocalBranch',
                                        localBranch: "**"],
                                    [$class: 'SubmoduleOption',
                                        disableSubmodules: false,
                                        parentCredentials: true,
                                        recursiveSubmodules: true,
                                        reference: '',
                                        trackingSubmodules: false,
                                        timeout: 1200]],
                        gitTool: 'Default',
                        userRemoteConfigs: [[refspec: refSpec, url: 'ssh://git@****:7999/projectname/projectname.git']]
                    ])

使用gitscm拉取代码,执行失败,异常信息如下:

ERROR: Execution failed
08:08:09
hudson. plugins.git.GitException: Command "C: \Program Files\Git\cmd\git.exe submodule update -init -recursive
gemp_gst" returned status code 1:
08:08:09
stdout:
08:08:09
stderr: Cloning into 'path'…
08:08:09
Host key verification failed.
08: 08:09
fatal: Could not read from remote repository.

直接登录从节点,使用cmd命令拉取代码成功

git clone ssh://git@***:7999/projectname.git

cloning into 'projectname'
done.
remote: Compressing objects: 100% (1324/1324), done.
Receiving objects: 12% (133671/1049750), 445.31 мів 8.08 MiB/s
git jenkins jenkins-plugins cicd
1个回答
0
投票

您的 Jenkins 在与手动登录的用户不同的用户下运行,因此它们具有不同的

known_hosts
文件并信任不同的主机。您有两个选择:

  1. 以与 Jenkins 相同的用户身份登录并手动进行第一次克隆,触发提示接受主机密钥并将其永久添加到 Jenkins
    known_hosts
  2. 转到 Jenkins Web UI、管理、安全、Git 主机密钥验证配置,然后选择“接受首次连接”

然后重新运行您的管道,一切都应该很顺利。或者至少您会收到不同的错误消息。

© www.soinside.com 2019 - 2024. All rights reserved.