git - 无法在管道作业中使用 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 时它会查找目录和键。
解决方案
我明白了这个问题,问题出在 windows slave 上。因此,当我们设置 windows slave 时,我们确实将其设置为服务。虽然我们设置 Windows 服务,但最好始终使用凭据对其进行配置。
- 打开服务(运行->services.msc)
- jenkins_slave 进程的打开属性
- 点击标签“登录”
- 而不是系统帐户,在“此帐户”下配置
- 停止并重新启动服务
另外,安装 git bash 而不是 cygwin,它将适用于 sshd 服务。就是这样,现在一切正常。
推荐阅读
- python - Anaconda3\lib\subprocess.py",第 997 行,在 _execute_child 启动信息中
- ajax - axios ajax调用失败时如何访问状态码
- python - 基于单列重塑 Pandas 数据框
- java - 进度对话框在 android studio 中不起作用
- python - 为什么“去定义”在 Spyder 中不起作用?
- ruby-on-rails - 数组项的Rails部分不处理对象数据
- php - PHP / SQL 项目可以使用哪些源代码控制
- node.js - AWS Lambda 外部 URI 请求错误:连接 ETIMEDOUT
- emacs - emacs,弹丸和符号链接
- android - Android Studio 中的图形视图布局为空白