GitLabCICD实战----在.gitlab-ci.yml文件的步骤中使用git clone 另一个代码仓报错的解决办法
更多信息请关注 个人网站
一、背景
在有些时候,比如在一个项目中,产品的代码是java代码仓,自动化测试脚本是python语言,单独存放的代码仓,在使用GitlabCICD构建流水线的时候有这样一种场景,比如对产品的java代码进行了编译打包部署,这个时候想在java代码仓的.gitlab-ci.yml中继续使用git clone python自动化脚本代码仓,这样虽然自动化测试脚本单独存放代码仓,却可以很好的集成到java产品代码仓的流水线中,执行完自动化测试后还能将测试结果上传到java产品的代码仓,从而达到完整的有机整体
但是在实际操作中,在执行git clone xxx的时候报如下错误
$ git clone git@xxxxxt.git
Cloning into 'summer_ospp_autotest'...
Host key verification failed.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
当然gitlabCICD流水线支持java代码仓触发python代码仓的trigger的方式,但是不能很好的将自动化用例的通过与否反馈到java代码仓中
二、原因分析
(1)手工的方式使用root用户登录gitlab-runner的虚拟机,然后执行git clone的方式是可以下载代码的(因为已经在gitlab上配置了公钥)
(2)GitLabCICD流水线执行的方式跟手工的方式几乎完全一样,不同的是gitlab流水线执行的时候是使用gitlab-runner的用户登录的
是的,gitlab流水线执行git clone失败的原因就是因为用户不同的原因,因为gitlab-runner用户是没有权限访问root用户的.ssh目录下的文件的
三、解决方案
(1)将root用户的 .ssh 文件下的所有文件都拷贝到 gitlab-runner用户下
cp /root/.ssh/* /home/gitlab-runner/.ssh/
(2)查看 gitlab-runner 用户下的 .ssh 文件下的文件的所属者及所属组,发现此时仍然属于root用户和root用户组
[root@192-168-8-104 ~]# ls -la /home/gitlab-runner/.ssh
total 16
drwx------. 2 gitlab-runner gitlab-runner 80 Nov 26 13:32 .
drwx------. 12 gitlab-runner gitlab-runner 192 Oct 26 15:46 ..
-rw-------. 1 root root 565 Nov 26 13:32 authorized_keys
-rw-------. 1 root root 1679 Nov 26 13:32 id_rsa
-rw-r--r--. 1 root root 400 Nov 26 13:32 id_rsa.pub
-rw-r--r--. 1 root root 373 Nov 26 13:32 known_hosts
(3)将 gitlab-runner 用户下的 .ssh 文件下的所有文件的所属者和所属组都划分给gitlab-runner
chown gitlab-runner /home/gitlab-runner/.ssh/*
chgrp gitlab-runner /home/gitlab-runner/.ssh/*
(4)再次查看,如下,表示已经OK了
[root@honghua-centos-02 ~]# ls -la /home/gitlab-runner/.ssh
total 12
drwx------ 2 gitlab-runner gitlab-runner 57 Nov 25 16:06 .
drwx------ 10 gitlab-runner gitlab-runner 165 Nov 25 15:55 ..
-rw------- 1 gitlab-runner gitlab-runner 1679 Nov 25 16:06 id_rsa
-rw-r--r-- 1 gitlab-runner gitlab-runner 400 Nov 25 16:06 id_rsa.pub
-rw-r--r-- 1 gitlab-runner gitlab-runner 372 Nov 25 17:25 known_hosts
(5)再次触发gitlab流水线,此时即可以在.gitlab-ci.yml中使用git clone 的方式下载子库的代码了
如下即为一个java代码仓的.gitlab-ci.yml中的测试步骤,去自动化测试脚本仓下载代码,然后执行用例,执行完成后将自动化结果上传到java代码仓的流水线,如此就能很好的做到开发人员提交代码后即能看到用例通过情况
Gitlab安装部署----CentOS7系统
Gitlab安装部署----Docker方式
Gitlab安装部署----安装注册Gitlab Runner
Gitlab安装部署----卸载Gitlab Runner
GitLabCICD实战----在.gitlab-ci.yml文件的步骤中使用git clone 另一个代码仓报错的解决办法
相关文章
- git小技巧--如何从其他分支merge个别文件或文件夹
- [Git] Git fetch和git pull的区别
- [Git] git merge之squash
- mapreduce 实现写出orc文件
- 将tgz文件解压到指定目录
- [Git] Use git add --patch for better commit history and mitigating bugs
- [Practical Git] Configure global settings with git config
- 两台centos之间传送文件
- centos删除乱码名称的文件
- git放弃本地文件修改
- [转] C#2010 在TreeView控件下显示路径下所有文件和文件夹
- 一天学完spark的Scala基础语法教程十三、文件IO操作(idea版本)
- Android File文件复制功能实现
- github 创建网络仓库 ,使用git工具将本地文件上传/删除 --- 心得
- Qt加载QSS文件
- Git 删除 GitHub仓库的文件——详细操作 githua如何删除文件
- macOS 解压 rar 文件
- C#文件读写操作 [详细]
- Python使用HTTP协议下载文件
- struts-config.xml 文件:
- Git过滤文件和文夹
- [系统安全] 十六.PE文件逆向基础知识(PE解析、PE编辑工具和PE修改)
- 一文吃透 VS Code+Git 操作(vs code中git的相关配置与使用)
- 【Git技巧】第五篇 git log 查看历史提交记录
- Git实战之git客户端上传文件到github
- [Git & GitHub] 利用Git Bash进行第一次提交文件
- [Git & GitHub] 解决办法:error: failed to push some refs to 'https://github.com/xxxx.git'