首页 > 解决方案 > 无法在管道作业中使用 GIT 提交或推送 - 无法创建目录“/home/SYSTEM/.ssh”

问题描述

我有 Jenkins Master 并在 Windows Slave 上运行作业。我正在尝试将我的提交推送到我的 git 存储库,但没有按预期工作

下面是我的管道脚本

{node('win2k12') {
def artifactTagVersion = params.TAG_VERSION
if(artifactTagVersion) { // groovy treats null or empty strings as false
    print "Building in Release mode for version: ${artifactTagVersion}"
    // create flag to define that release mode is active
    isRelease = true
    } else {
        print "Building in SNAPSHOT mode"
    }

stage("Checkout & Use git"){
    deleteDir()
    checkout scm
    if(isRelease){
        print "Preparing sources for releasing."
        // go into headless mode
        bat "git checkout --detach HEAD"
        bat "echo v${artifactTagVersion} > versionFile.txt"
        def commitMessage = "Release for version ${artifactTagVersion}"
        sshagent(['a075b609-adaf-233d7f3be0a0']) {
            bat "git add ."
            bat "git commit -m \"${commitMessage}\""
            bat "git tag -a v${artifactTagVersion} -m \"${commitMessage}\""
            bat "git push origin v${artifactTagVersion}"
        }
    }
}

这是我在构建时遇到的错误

E:\jenkins\slave\workspace\test-job-trainex---dev---ts>git push origin v1
Could not create directory '/home/SYSTEM/.ssh'.
Host key verification failed.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.

我不知道,尝试了很多搜索,但没有人回答为什么当它是一台 Windows 机器并且路径看起来像 linux 时它会查找目录和键。

标签: gitjenkinsjenkins-pipeline

解决方案


我明白了这个问题,问题出在 windows slave 上。因此,当我们设置 windows slave 时,我们确实将其设置为服务。虽然我们设置 Windows 服务,但最好始终使用凭据对其进行配置。

  • 打开服务(运行->services.msc)
  • jenkins_slave 进程的打开属性
  • 点击标签“登录”
  • 而不是系统帐户,在“此帐户”下配置
  • 停止并重新启动服务

另外,安装 git bash 而不是 cygwin,它将适用于 sshd 服务。就是这样,现在一切正常。


推荐阅读