CI持续集成环境搭建(3)--git的安装与搭建
https://blog.51cto.com/superleedo/2057841
1. 安装git
*Note:不要用yum安装git, yum源安装git最新版本是1.8.3,该版本太老,之后用git commit 有可能会报错:git: ‘interpret-trailers’ is not a git command. See ‘git --help’.
cannot insert change-id line in .git/COMMIT_EDITMSG
必须安装更新版本,比如git-2.12.2, 需要掌握手动编译安装git的方法。
后续章节使用gerrit, 会安装gitweb, git-review, yum安装gitweb, git-review会同时安装git(老版本1.8.3), 会覆盖我们安装的新版本,因此我们在安装git之前安装gitweb, git-review.
1) 安装git依赖包
yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel gcc perl-ExtUtils-MakeMaker
2)安装gitweb
yum install -y gitweb
3)安装git-review
把代码提交到gerrit上进行review,会用到git review命令,可以很简单去把修改push到gerrit,这需要我们单独安装git-review插件。
yum install -y git-review
4) 卸载已安装的git
如果环境已经用yum装过git, gitweb,或 git-review,则不能用yum remove git来卸载git, 因为这样会同时卸载依赖包gitweb, git-review.
卸载老git而不卸载依赖包gitweb, git-review :
rpm -e --nodeps git
这个命令,就只删除git这个包,不会删除依赖包gitweb, git-review
5) 下载并安装git
a. 进入目录/usr/local/, 将git下载到该目录
wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.12.2.tar.gz
b. 解压git-2.12.2.tar.gz
tar -xzvf git-2.12.2.tar.gz
#c. 配置git安装路径:
# cd /usr/local/git-2.12.2#./configure prefix=/usr/
#d. 编绎并且安装
make && make install
编译git源码,进入cd cd /usr/local/git-2.12.2 目录
make prefix=/usr/local/git all
安装git至/usr/bin/git路径
make prefix=/usr/local/git install
e. 把git加到环境变量
vim /etc/profile
把:/usr/local/git/bin 添加到$PATH后面
source /etc/profile
e. 检查git版本是不是安装的版本 2.12.2
git version
2. 初次运行git前的配置
配置git用户
cd ~
touch .git-credentials
vi .git-credentials
http://root:123456@$CentOSIPgit config --global credential.helper store
git config --global user.name $username
git config --global user.email $mail
git config --list //查看配置信息
Git 提供了一个叫做 git config 的工具(译注:实际是 git-config 命令,只不过可以通过 git 加一个名字来呼叫此命令。),专门用来配置或读取相应的工作环境变量。而正是由这些环境变量,决定了 Git 在各个环节的具体工作方式和行为。这些变量可以存放在以下三个不同的地方:
a. /etc/gitconfig 文件:系统中对所有用户都普遍适用的配置。若使用 git config 时用 --system 选项,读写的就是这个文件。
b. ~/.gitconfig 文件:用户目录下的配置文件只适用于该用户。若使用 git config 时用 --global 选项,读写的就是这个文件。
c. 当前项目的 Git 目录中的配置文件(也就是工作目录中的 .git/config 文件):这里的配置仅仅针对当前项目有效。每一个级别的配置都会覆盖上层的相同配置,所以 .git/config 里的配置会覆盖 /etc/gitconfig 中的同名变量。
3. git服务器的搭建
大家应该都用过svn, git, github, gitlab等等吧,github是公用仓库,如果私有仓库是要付费的,gitlab私有仓库不用付费,大家都可以选择。
除了github, gitlab之外,我们也可以在自己的服务器上搭建自己的git服务器。
这样一来呢,速度变快了,而且更加方便管理,安全方面也得到了提升。
1) 创建初始化Git仓库
首先我们需要选定一个目录作为git仓库, 进入到任意想要放置仓库的目录下,一般来说git仓库的名称都是以.git结尾。
cd /opt/
git init --bare devops_test.git #初始化项目
2) 配置证书登陆
配置所有需要登陆的用户的公钥,公钥位于id_rsa.pub文件中,如果没有的话可以使用ssh-keygen生成。然后将我们的公钥添加到服务器的authorized_keys文件中。
cd ~
ssh-keygen -t rsa //生成证书
cat .ssh/id_rsa.pub > authorized_keys
chmod 644 authorized_keys
把私钥加入git SSH Keys
3)克隆仓库
cd /tmp/
git clone root@$CentOSIP:/opt/devops_test.git
4) 提交更新到git仓库
把我们的文件加入到本地仓库中,然后执行如下命令将项目提交到服务器!
cd devops_test
把需要提交的文件放到该目录
git add .
git commit -m "xxxxx"
git push origin/master
或者
git review
Note: 养成好的习惯,在每次准备修改代码前一定先执行git pull命令将本地仓库同步到最新版本!!!减少冲突的可能。
4. issues
Issue 1: git: ‘interpret-trailers’ is not a git command. See ‘git --help’.
cannot insert change-id line in .git/COMMIT_EDITMSG
很奇怪,加上issue3的solution gitdir,commit-msg后,就是出现这个问题,平时不会有,在网上也找不到答案。
solution:
check whether it is existed in git installation path: such as /usr/libexec/git-core
we can get the git-ls-tree, git-mailinfo, git-ls-remote and so on
Update git version to git-2.12.2:
a. 下载git包到目录/usr/src/, 并解压
wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.12.2.tar.gz
b. 卸载老git而不卸载依赖包gitweb, git-review :
rpm -e --nodeps git这个命令,就只删除git这个包,不会删除依赖包,
c. 配置git安装路径
cd /usr/src/git-2.12.2
./configure prefix=/usr/local/git/
d. 编译并且安装
make && make install
issue 2:bash: git-upload-pack: command not found
代码服务器上的git安装路径是/usr/local/git,不是默认路径,根据提示,在git服务器上, 建立链接文件:
Solution:
硬连接 ln /usr/local/git/bin/git-upload-pack /usr/sbin/
issue 3: pemission denied(publickey) while git clone ssh://gerrit@xx.xx.xx.xx:29418/devops_test.git
solution:
删除~/.ssh 下的keys, ssh-keygen-t rsa生成,然后通过cat id_rsa.pub 拷入gerrit setting中的public选项中
Issue 4: git review: Could not connect to gerrit. We don’t know where your gerrit is. Please manually create a remotenamed “gerrit” and try again.
Enter your gerrit username: gerrit
Trying again with ssh://gerrit@xx.xx.xx.xx:29418/devops_test.git
<traceback object at 0x7f4daf6fec68>
We don’t know where your gerrit is. Please manually create a remote
named “gerrit” and try again.
Solution:
手动添加节点gerrit节点
git remote add gerrit ssh://gerrit@xx.xx.xx.xx:29418/devops_test.git
issue 5: git review: ! [remote rejected] HEAD -> refs/publish/master (no common ancestry)error: failed to push some refs to ‘ssh://gerrit@xx.xx.xx.xx:29418/devops_test.git’
Solution:
a solution is to start in a new folder, then clone the (empty) project from gerrit. This folder then have a common ancestry with this gerrit project. Then you could work to add your source files into this new folder using git add until satisfied,(that mundane work is the non-easy part) leaving out any old .git folder and finally try a push. This pushes your project onto gerrit with git history beginning from this point on.
Issue 6: ! [remote rejected] HEAD -> refs/publish/master (commit 1e94fe0: missing Change-Id in message footer)
error: failed to push some refs to ‘ssh://gerrit@xx.xx.xx.xx:29418/devops_test.git’
Solution:
依次在项目路径下输入如下命令,即可解决:
gitdir=$(git rev-parse --git-dir);
#将xxxxx@xxxx 替换成相应用户名、服务器即可(该命令从服务器拷贝commit-msg文件)
scp -p -P 29418 xxxxx@xxxx:hooks/commit-msg ${gitdir}/hooks/
#再提交一次即可生成change-id
git commit –amend
CI持续集成环境搭建(3)--git的安装与搭建相关推荐
- 在CentOS7上安装Drone搭建CI持续集成环境
文章目录 在CentOS7上安装Drone搭建CI持续集成环境 前言 安装前规划 安装过程 配置域名解析 安装Docker 拉取Drone Server镜像 添加GitHub OAuth Applic ...
- 在 CentOS 7 上搭建 Jenkins + Maven + Git 持续集成环境
本文以部署 Spring boot + Maven 项目为例,使用码云作为代码托管仓库,在 CentOS 7 上搭建 Jenkins 持续集成环境. 1. 准备工作 1.1 安装 Java 环境 Je ...
- jenkins + Git 搭建持续集成环境
2019独角兽企业重金招聘Python工程师标准>>> 持续集成通过自动化构建.自动化测试以及自动化部署加上较高的集成频率保证了开发系统中的问题能迅速被发现和修复,降低了集成失败的风 ...
- 搭建基于Jenkins, Apache Mesos和Marathon的弹性高可用的持续集成环境
2019独角兽企业重金招聘Python工程师标准>>> [编者按]持续集成的开发实践是目前的一个热门话题,在本文中,数人科技云平台负责人周伟涛解析其利用开源的Jenkins,Apac ...
- CI持续集成系统环境---部署gerrit环境完整记录
转载自: http://www.cnblogs.com/kevingrace/p/5624122.html 开发同事提议在线上部署一套gerrit代码审核环境,废话不多说,部署gerrit的操作记录如 ...
- Centos+Gitlab+Jenkins 针对.NET项目持续集成环境搭建和自动化部署
目录 一.前言 二.系统环境 三.Gitlab安装 3.1 安装依赖软件 3.2 开启postfix 3.3 安装Gitlab 3.4 设置服务器IP和端口 3.5 重置并启动GitLab 3.6 浏 ...
- Jenkins 搭建C++持续集成环境
简介 本文主要介绍如何通过 Jenkins 搭建 C++的持续集成环境.最后达到的效果是每天00:00 - 08:00之间构建.测试和打包一次工程. 开发环境为 VS2015,测试工具为 CppUni ...
- Docker+Jenkins持续集成环境(1)使用Docker搭建Jenkins+Docker持续集成环境
本文介绍如何通过Jenkins的docker镜像从零开始构建一个基于docker镜像的持续集成环境,包含自动化构建.发布到仓库\并部署上线. 0. 前置条件 服务器安装docker,并启动docker ...
- 基于 Jenkins 快速搭建持续集成环境--转
源地址:http://www.ibm.com/developerworks/cn/java/j-lo-jenkins/ 持续集成是一种软件开发实践,对于提高软件开发效率并保障软件开发质量提供了理论基础 ...
最新文章
- C# 栈 、队列的概念
- 【22,23节】Django的GET和POST属性笔记
- 利用OpenSSH实现基于秘钥的认证
- 如何用javasript对Gridview的项目进行汇总统计?
- linux命令tree
- oracle_监听器无法启动的问题
- 高性能MySQL——查询性能优化
- DPlayer播放器本地化P2P解析加速版源码
- catia螺纹孔在二维图上不显示_螺钉的螺纹是搓牙加工的,那么螺母的螺纹是怎么加工的呢...
- wordpress所属权限改为nginx_linux运维之logrotate日志轮替——对nginx日志进行轮替-linux运维...
- CSDN第一次写博客时的模板
- 常用的计算机显示器按其显像原理可分为什么,计算机组装与维护的试卷C答案...
- Windows版JMeter下载安装
- android源码中国地图,Android 绘制中国地图
- 1,matlab仿真正运动学
- ios-app杀死状态下响应推送
- ARM学习-GNU ARM汇编
- 计算机组成与系统结构指导,计算机组成与系统结构实验指导书
- 爽啊!写了一个网页:首字母索引的单词(十分垃圾,简单的不得了)
- 如何配置java环境变量?