centos+git+Jenkins+pytest+allure实现自动化集成测试后发送测试报告邮件(一):git仓库搭建

本文详细介绍了如何从零开始搭建和配置Git服务端和客户端,包括安装Git、创建远程仓库、配置SSH免密登录、初始化仓库、克隆与推送代码等步骤。此外,还讲解了在PyCharm中使用Git进行代码上传的方法,适合初学者和团队协作环境使用。
摘要由CSDN通过智能技术生成

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

提示:这里可以添加本文要记录的大概内容:

随着接口自动化和持续集成越来越流行,基于git+Jenkins实行测试代码自动拉取执行被卷成自动化测试的基本技能,本着别人都会我不会,我怎么管你要高工资,就自己搞了一套环境,系统是 系统企鹅云的2核+2G+40G,centos8,¥40一年,动手能力强也可以在本地装一套,不过本地和远程还是有区别的。


提示:以下是本篇文章正文内容,下面案例可供参考

一、git是什么?

git,就是一个代码管理工具,分本地仓库和远程仓库,git分工作区,暂存区,版本库,过程如下:
工作区–git add–>暂存区–git commite–>版本库–git push–>远程仓库。

二、git服务端安装配置(远程仓库)

2.1.git服务端安装

代码如下(示例):
# dnf -y install git # 安装方式1
# yum install -y git # 安装方式2
# git --version # 查看git版本
如果出现git版本信息则说明git已经安装成功,可以进入下一步配置:

在这里插入图片描述

2.2.为git添加用户:

实际工作中不可能给你root用户使用,多人协同应该是一人一个账号,并且只用于ssh的推代码和下代码,
重复下面的操作根据需要添加用户
# groupadd git  # 添加用户组git
# adduser git -g git # 添加新用户git并添加用户到git组
# passwd git # 修改用户密码

2.3.安装ssh服务:

# yum install openssh*    # 途中提示按y
出现complete !表示成功

在这里插入图片描述

2.4.创建证书登录:

证书文件由root用户创建,将本地公钥写入authorized_keys文件中可实现免密登录,把本地公钥给管理员,
管理员统一写入,权限够也可以在本地直接上传,后面再说。
# mkdir /home/git/.ssh   # 创建目录
# chmod 700 /home/git/.ssh  #赋予权限,只有管理员可以更改
# touch 600 /home/git/.ssh/authorized_keys  # 创建证书文件、root可读写
注意:自己搭建环境时,可将.ssh和authorized_keys,属组和属主改为git,方便操作,
否则上传本地公钥时会提示permission denide 拒绝访问

.ssh文件的属性

2.5.打开RSA认证:

# cd /etc/ssh
# vim sshd_config 
# service sshd restart  # 重启服务
在sshd_config文件修改以下配置,没有的可以加上

sshd_config
PermitRootLogin yes
PasswordAuthentication yes
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

2.6.禁止shell登录:

个人使用无所谓,项目使用只允许ssh推送或下载代码,不允许使用shell直接登录主机。
在 /etc/passwd中进行如下修改:
进入命令行,使用 /git 搜索到git,如下:
git:x:1001:1001::/home/git:**/bin/bash**
改为:
git:x:1001:1001:/home/git:**/usr/bin/git-shell**
		
注意:加粗部分为centos下是git-shell文件位置,其他服务器如果没有可使用 find / -name "git-shell"进行查找。

2.7.初始化远程仓库:

初始化代码仓库有两种,git init 和 git --bare init

git init <dir> 初始化本地仓库,会在该目录下创建一个带有.git文件,该dir就是一个仓库,有默认工作目录,
可以在该目录下使用git命令,可以直接clone,不能push需要修改.git/config文件实现push,
分支有人修改时容易冲突报错。
	
git --bare init <dir> 初始化一个裸仓库,不会在目录下生成.git文件,而是生成.git文件下的版本历史记录,
没有工作目录,可以直接clone和push,不能在该目录下使用git命令。

init与 --bare config文件对比
在这里插入图片描述
模拟两个仓库:
在这里插入图片描述
git init 《dir》:这个的坑比较多,不建议使用
git init mock_project01_init #初始化代码库 在这里插入图片描述
此时本地对应的远程仓库为:企鹅云公网IP:/home/git/mock_project01_init
本地可以clone但是push则会报错,这是因为git默认是拒绝push的需要修改.git/config文件:
[receive]
denyCurrentBranch = ignore
在这里插入图片描述
添加后可正常push,
如果使用了git init初始化,则远程仓库的目录下,也包含work tree,当本地仓库向远程仓库push时, 如果远程仓库正在push的分支上(如果当时不在push的分支,就没有问题), 那么push后的结果不会反应在work tree上, 也即在远程仓库的目录下对应的文件还是之前的内容。
解决方法:git reset --hard 可以看到push后的内容
注:这里没有演示推代码,与善其事必先利其器,后面会讲,别急。
在这里插入图片描述
git --bare init :推荐使用

#  git --bare init origin.git   指定初始化裸仓库为origin.git

在这里插入图片描述
在这里插入图片描述
此时远程仓库地址为:企鹅云公网IP:/home/git/mock_project02_bare/origin.git
该仓库看不到提交的文件,因为是存放在git blob中的,可以在服务器仓库下使用git log查看提交 日志,与本地提交日志是一样的

以上完成,远程仓库算是完成,下面进入本地仓库的安装配置

三、git客户端端安装配置(本地仓库)

3.1.git客户端的安装

直接去git官网下载,傻瓜式安装即可
网址(示例):

https://git-scm.com/

##如果服务器上无法安装,就下载安装包,传上服务器手动安装


3.2.git本地克隆仓库

安装好本地git客户端后,在准备创建仓库的文件夹下面,右键--》git bash here,
弹出git的命令行,输入下面$后面的命令,中文部分换成服务器ip和对应的服务器仓库目录即可。
$ git clone git@企鹅云公网IP:服务器仓库地址
克隆完成没有报错(error),如果是一个空仓库会有告警(warring),
clone下来的仓库应该带有.git文件,如下图所示:

在这里插入图片描述
后续的代码编辑便在这个文件夹下面,如果clone下来的仓库没有.git文件,说明远程仓库没有初始化好,也会有相应提示:克隆的不是一个仓库,检查远程仓库配置是否正确。
注:两个文本是后面建的,注意地址栏两个仓库的名字,和服务器上是对应的。

3.2.git本地配置

通过上面的clone,已经成功将远程仓库克隆到本地,进入仓库,右键-->git bash here,
在弹出的git命令行进行以下配置(根据自己需要)。
$ git config --global user.name  # 配置自己的用户名 --global 全局配置,多项目共用
$ git config --global user.email # 配置邮箱
$ git config --list # 查看配置信息
$ ssh -keygen -t rsa -C "email@163.com"  # 生成本地密钥,用于服务器的免密登录,具体参照服务器配置

以上是常用的配置,生成本地的私钥和公钥,位置在命令行会有提示,基本就会在下图所示位置:
在这里插入图片描述

3.3.git公钥上传

将公钥导入到服务器上 /home/git/.ssh/authorized_keys

$ ssh 用户名@服务器地址 ‘cat >> 写入公钥的位置’< 本地公钥的位置
$ ssh git@企鹅公网IP 'cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub
再在服务器上查看是否成功,成功后authorized_keys文件将会新增记录。

在这里插入图片描述
我这里是两台电脑的公钥,上传成功后原本authorized_keys是空文件的会多出一行本地的私钥,可以比对以下。工作中这一步应该root管理员来做,只需要给管理员公钥,由管理员统一写道服务器上,并且要禁止git用户的shell登录。

3.3.为本地添加远程仓库

虽然从clone下来了远程仓库,没有配置远程仓库前本地git是不知道远程仓库在哪里的,为了方便后续推代码,
需要为本地仓库添加远程仓库,相当于将本地仓库与远程仓库联系起来,实际工作中可能会有不止一个仓库,根据需要添加即可。
$ git remote add 仓库名 用户名@服务器ip:仓库地址
#默认仓库名为origin,可以自己配置在本地可以查看,以mock_project02_bare为例,名字在本地可查看
$ git remote add mock_project02_bare git@124.221.126.208:/home/git/mock_project02_bare/origin.git  #添加远程仓库
$ git remote -v # 查看添加的远程仓库
$ git config --global push.defult simple # 把本地分支推送到服务器同名分支。

远程仓库添加成功后如下图所示:
远程仓库在这里插入图片描述

3.4.修改远程仓库:

or: git remote rename <old> <new>  # 重命名仓库
or: git remote remove <name>   # 移除远程仓库本地
or: git remote set-head <name> (-a | --auto | -d | --delete | <branch>) # 版本控制
or: git remote [-v | --verbose] show [-n] <name>  # 查看远程仓库
or: git remote set-url [--push] <name> <newurl> [<oldurl>]  # 更改仓库下载地址
or: git remote set-url --add <name> <newurl>  # 为已有仓库更新地址
or: git remote set-url --delete <name> <url>  # 移除指定的远程库地址
基本为删除后添加,或直接修改配置文件
还有一些需要查询验证

3.5.代码的跟踪,添加,提交:

完成以上配置后便可在本地仓库内编辑代码,添加跟踪,提交版本库,推送到远程仓库。
步骤:
工作区--git add .-->暂存区--git commite -m ''-->版本库--git push originname-->git远程仓库
$ git status #查看本地仓库状态,可以看到哪些文件被跟踪,只有被跟踪的文件才能被提交并加到版本库

在这里插入图片描述
$ git add . # 添加所有文件为跟踪状态,也可以 git add filename
在这里插入图片描述
$ git commit -m ‘描述’ # 描述方便以后回溯,这里最好加上,不然会弹出提示,在弹出的提示会是一个类似vim的编辑界面,注意看最下面一行的提示,进入命令行后提交,退出后将描述加上就没问题了
在这里插入图片描述
$ git push 本地添加远程仓库时的名字
$ git push mock_project02_bare
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.6.小结:

# 编辑好代码后进行以下操作:
$ git add . # 将文件从工作区添加到暂存区
$ git commti -m  ''  # 将文件提交到版本库--未提交到远程仓库
$ git push 本地设置的远程仓库名  # 将文件推送的远程仓库
# 由于重复性太高可以在仓库内存放一个shell脚本一键完成跟踪,添加,提交,推送,脚本如下
	comment=$(data)
	Echo $comment
	
	cd /root/tedu_nsd  # 实际的本地仓库
	Git add .
	Git commit -m "$comment"
Git push originname # 仓库的名字
# 可以和pycharm联合使用,就不用设置什么shell脚本了。^ ^
踩过的坑:
1.
一次commit,一次push,多次commit,再push会报错。
2.
坑2:git push上传失败
通过以下命令进行代码合并(工作中每天早上编写代码前第一件事就做这个):
$ git pull --rebase origin master  # origin为远程仓库名
$ git push -u origin master
基本问题就解决了,避免别人也提交了代码,分支会产生冲突。

可能是与远程仓库分支有冲突导致,具体问题具体分析

3.6.版本控制:

留个坑,这个还没学会。

四、git+pycharm实现代码上传

直接用图了,难得打字了。
在这里插入图片描述
下面pycharm内添加远程仓库。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
后面会让输入密码,就是git用户的密码,如果报错,回去检查那一步不对,尤其是提示权限什么看看仓库的属组,属主,权限对不对,要是第三节里能手动把文件推到服务器上这里应该就没这么多问题,还有就是用init初始化的仓库默认是不能push的。
在这里插入图片描述
提交代码:
在这里插入图片描述
在这里插入图片描述
到这里远程,和本地的git已经准备好了,下期安装Jenkins。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值