CI持续集成 -- git 与 gitlab
版本控制系统概述 git
Git基本概述
Git是一个免费的开源分布式版本控制系统,旨在快速高效地处理从小型到大型项目的所有内容。
Git安装配置
#安装Git
yum install -y git
#配置用户信息,用户名称和电子邮件地址,每次 Git提交时都会引用这两条信息,说明是谁提交了更新;
git config --global user.name "onelpc"
git config --global user.email "614257760@qq.com"
git config --global color.ui true #配置颜色,非必须
#会生成一个配置文件
[root@gitlab ~]# cat ~/.gitconfig
[user]
name = onelpc
email = 614257760@qq.com
[color]
ui = true
Git基本命令
add #添加文件内容至索引
bisect #通过二分查找定位引入 bug 的变更
branch #列出、创建或删除分支
checkout #检出一个分支或路径到工作区
clone #克隆一个版本库到一个新目录
commit #记录变更到版本库
diff #显示提交之间、提交和工作区之间等的差异
fetch #从另外一个版本库下载对象和引用
grep #输出和模式匹配的行
init #创建一个空的 Git 版本库或重新初始化一个已存在的版本库
log #显示提交日志
merge #合并两个或更多开发历史
mv #移动或重命名一个文件、目录或符号链接
pull #获取并合并另外的版本库或一个本地分支
push #更新远程引用和相关的对象
rebase #本地提交转移至更新后的上游分支中
reset #重置当前HEAD到指定状态
rm #从工作区和索引中删除文件
show #显示各种类型的对象
status #显示工作区状态
tag #创建、列出、删除或校验一个GPG签名的 tag 对象
Git基本操作
创建git本地仓库
#创建本地工作目录
mkdir /demo
cd /demo/
#初始化为git工作目录
git init
提交数据
#提交文件到缓存区,
git add file1
git add . //点(.)代表当前目录下所有文件
#提交文件到本地仓库
git commit -m "添加file1"
#当我们修改了很多文件,而不想每一个都add,想commit自动来提交本地修改(-a参数不会造成新文件被提交,只能修改)
git commit -a -m "修改了xxx等x个文件"
移动数据
git mv file1 file4 #修改文件名称
git commit -m 'change file name' #提交
对比数据
#本地文件与缓冲区文件对比
git diff file1
#缓冲区文件与仓库文件对比
git diff --cached file1
撤销修改的文件
#提交到缓冲的区文件撤回
git reset HEAD filename
#未add到缓冲区的文件撤回
git checkout filename
查看版本与回退
#查看现在版本
git log --oneline
git reset --hard 942bdf3
#查看所有历史版本
git reflog --oneline
git reset --hard 942bdf3
Git分支管理
#增加一个新分支
git branch dev01
#切换分支
git checkout dev01
#查看当前分支情况/所在分支(*代表当前所在)
git branch
#切回主分支
git checkout master
#在主分支合并dev01分支
git merge dev01 -m '注释'
#删除dev01分支
git branch -d dev01
Git标签管理
#给当前版本打标签
git tag v1.2
#删除标签
git tag -d v1.2
#给任意版本打标签
git tag -a v1.0 -m '优化了1111 修复bug' a119962
#查看代码标签信息,(-n,显示tag信息)
git tag -n
Git远程仓库
将远程仓库与本地仓库关联
gitee创建一个仓库
生成公钥文件
[root@gitlab ~/demo]# ssh-keygen
[root@gitlab ~/demo]# cat /root/.ssh/id_rsa.pub
>>将公钥内容复制
将公钥添加到gitee
按照提示操作
提交一个文件至远程仓库
工作区: touch file5
暂存区: git add .
本地仓库: git commit -m "new file file5"
远程仓库: git push origin master
Gitlab仓库
Gitlab介绍
gitlab是一个开源仓库,社区版ce,企业版ee.(基于git基础上开发)
gitlab 部署
#下载gitlab
[root@gitlab ~]# wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-12.3.0-ce.0.el7.x86_64.rpm
#安装gitlab 依赖
[root@gitlab ~]# yum install -y curl openssh-server openssh-clients postfix cronie policycoreutils-python
#安装gitlab
[root@gitlab ~]# yum localinstall -y gitlab-ce-12.3.0-ce.0.el7.x86_64.rpm
#配置gitlab
1.备份gitlab配置文件
[root@gitlab ~]# cp -v /etc/gitlab/{gitlab.rb,gitlab.rb_bak}
[root@gitlab ~]# vim /etc/gitlab/gitlab.rb
2.修改gitlab访问的url
external_url 'http://gitlab.oldxu.com'
3.关闭一些没有用程序
prometheus['enable'] = false
prometheus_monitoring['enable'] = false
4.配置邮箱
gitlab_rails['gitlab_email_enabled'] = true
gitlab_rails['gitlab_email_from'] = "614257760@qq.com" # 发件邮箱
gitlab_rails['gitlab_email_display_name'] = 'OneLpc' # 发件人显示名称
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "614257760@qq.com" #发件人邮箱账户
gitlab_rails['smtp_password'] = "qweasdzxc" #发件人邮箱客户端授权码
gitlab_rails['smtp_domain'] = "qq.com"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
#初始化gitlab
[root@gitlab ~]# gitlab-ctl reconfigure
#启动 gitlab
[root@gitlab ~]# gitlab-ctl start
浏览器访问,设置密码
Gitlab汉化
汉化包下载地址:https://gitlab.com/xhang/gitlab
#停止gitlab
[root@gitlab ~]# gitlab-ctl stop
#备份原文件
[root@gitlab ~]# \cp -rp /opt/gitlab/embedded/service/gitlab-rails{,.bak_$(date +%F)}
#替换语言包
[root@gitlab ~]# tar xf gitlab-12-0-stable-zh.tar.gz
[root@gitlab ~]# \cp -r gitlab-12-0-stable-zh/* /opt/gitlab/embedded/service/gitlab-rails/
#重新加载gitlab
[root@gitlab ~]# gitlab-ctl reconfigure
#启动gitlab
[root@gitlab ~]# gitlab-ctl start
#访问gitlab网站设置语句
选择右上角--->setttings---》Preferences -->Language
Gitlab备份
#手动备份
[root@gitlab-ce ~]# gitlab-rake gitlab:backup:create
>>默认的备份目录:`/var/opt/gitlab/backups`目录下tar的压缩包
#修改gitlab备份目录
[root@gitlab-ce ~]# vim /etc/gitlab/gitlab.rb
...
gitlab_rails['backup_path'] = "/data/gitlab/backups" #控制备份后的产物放在哪里
gitlab_rails['backup_keep_time'] = 604800 #保留多久的数据
...
[root@gitlab-ce ~]# gitlab-ctl reconfigure
Gitlab 数据恢复
# 停止相关数据连接服务
[root@gitlab-ce ~]# gitlab-ctl stop unicorn
[root@gitlab-ce ~]# gitlab-ctl stop sidekiq
# 从1576659867_2019_12_18_12.3.5编号备份中恢复
[root@gitlab-ce ~]# gitlab-rake gitlab:backup:restore BACKUP=1576659867_2019_12_18_12.3.5
# 启动Gitlab
[root@gitlab-ce ~]# gitlab-ctl start
Gitlab迁移
迁移如同备份与恢复的步骤一样, 只需要将老服务器备份文件拷贝到新服务器上
需要注意的是新服务器上的Gitlab
的版本必须与创建备份时的Gitlab
版本号相同.
Gitlab升级
关闭 gitlab 服务
[root@gitlab-ce ~]# gitlab-ctl stop unicorn
[root@gitlab-ce ~]# gitlab-ctl stop sidekiq
[root@gitlab-ce ~]# gitlab-ctl stop nginx
备份gitlab 数据
[root@gitlab-ce ~]# gitlab-rake gitlab:backup:create
安装新版本的rpm包
//直接安装
[root@gitlab-ce ~]# yum install gitlab-ce-12.3.0-ce.0.el7.x86_64.rpm
//报错.
Error executing action `run` on resource 'ruby_block[directory resource: /var/opt/gitlab/git-data/repositories]'
//解决方法:
[root@gitlab-ce ~]# chmod 2770 /var/opt/gitlab/git-data/repositories
启动gitlab
[root@gitlab-ce ~]# gitlab-ctl reconfigure
[root@gitlab-ce ~]# gitlab-ctl restart
[root@gitlab-ce ~]# head -1 /opt/gitlab/version-manifest.txt
gitlab-ce 12.3.0
Gitlab更改默认Nginx
略
CI持续集成 -- git 与 gitlab的更多相关文章
- Jenkins持续集成git、gitlab、sonarqube(7.0)、nexus,自动化部署实战,附安装包,严禁转载!!!
导读 之前用的都是SVN,由于工作需要用到Git,求人不如求己,技多不压身,多学一项技能,未来就少求别人一次,系统的学一遍,自己搭建一整套环境,自动化部署(自动发版),代码质量检测等等(为啥不用doc ...
- [原创]CI持续集成系统环境---部署Gitlab环境完整记录
Gitlab是一个代码托管平台,在实际工作中,对代码管理十分有用. 废话不多说,下面是对我自己搭建的Gitlab环境做一记录: (1)安装 ------------------------------ ...
- [原创]CI持续集成系统环境--Gitlab+Gerrit+Jenkins完整对接
近年来,由于开源项目.社区的活跃热度大增,进而引来持续集成(CI)系统的诞生,也越发的听到更多的人在说协同开发.敏捷开发.迭代开发.持续集成和单元测试这些拉风的术语.然而,大都是仅仅听到在说而已,国内 ...
- CI持续集成系统环境--Gitlab+Gerrit+Jenkins完整对接
原文地址https://www.cnblogs.com/kevingrace/p/5651447.html 近年来,由于开源项目.社区的活跃热度大增,进而引来持续集成(CI)系统的诞生,也越发的听到更 ...
- Git Hooks、GitLab CI持续集成以及使用Jenkins实现自动化任务
Git Hooks.GitLab CI持续集成以及使用Jenkins实现自动化任务 前言 在一个共享项目(或者说多人协同开发的项目)的开发过程中,为有效确保团队成员编码风格的统一,确保部署方式的统一, ...
- 【补充】Gitlab 部署 CI 持续集成
上一篇:<劈荆斩棘:Gitlab 部署 CI 持续集成> 上一篇所配置的.gitlab-ci.yml: stages: - build - test before_script: - ec ...
- GitLab CI持续集成配置方案
目录 1. 持续集成介绍 1.1 概念 1.2 持续集成的好处 2. GitLab持续集成(CI) 2.1 简介 2.2 GitLab简单原理图 2.3 GitLab持续集成所需环境 2.4 需要了解 ...
- Gitlab CI 持续集成的完整实践
Gitlab CI 持续集成的完整实践 本着公司团队初创,又在空档期想搞点事情,搭建了私有Gitlab的契机,顺便把持续集成搭建起,实现了对Python服务端代码的单元测试.静态代码分析和接口测试的持 ...
- 物联网架构成长之路(47)-利用GitLab实现CI持续集成
0.前言 前段时间,考虑到要练习部署一套CI/CD的系统.一开始考虑到Jenkins,随着这两天的了解,发现最新版的GitLab已经提供有CI/CD集成了.所以本次博客,干脆一步到位,直接用GitLa ...
随机推荐
- CKEditor图片上传问题(默认安装情况下编辑器无法处理图片),通过Base64编码字符串解决
准备做一个文章内容网站,网页编辑器采用CKEditor,第一次用,默认安装情况下,图片无法插入,提示没有定义上传适配器(adapter),错误码提示如下: 根据提示,在官网看到有两种途径:一使用CKE ...
- golang爬虫
- 解决 Url is blocked: Requests to the local network are not allowed
问题: 我在学习GitLab + Jenkins 自动化部署时,在GitLab的 MyProject => Settings => Integrations中输入完 &qu ...
- appium 方法整理
1.contexts contexts(self): Returns the contexts within the current session. 返回当前会话中的上下文,使用后可 ...
- maven的setting配置文件中mirror和repository的区别
当maven需要到的依赖jar包不在本地仓库时, 就需要到远程仓库下载 . 这个时候如果mavensetting.xml中配置了镜像 , 而且镜像配置的规则中匹配到目标仓库时 , maven认为目标仓 ...
- 仅反射加载(ReflectionOnlyLoadFrom)的 .NET 程序集,如何反射获取它的 Attribute 元数据呢?
原文:仅反射加载(ReflectionOnlyLoadFrom)的 .NET 程序集,如何反射获取它的 Attribute 元数据呢? 平时我们获取一个程序集或者类型的 Attribute 是非常轻松 ...
- C# vb .net实现像素化效果滤镜打马赛克
在.net中,如何简单快捷地实现Photoshop滤镜组中的像素化效果打马赛克呢?答案是调用SharpImage!专业图像特效滤镜和合成类库.下面开始演示关键代码,您也可以在文末下载全部源码: 设置授 ...
- jQuery.Form.js使用方法
一.jQuery.Form.js 插件的作用是实现Ajax提交表单. 方法: 1.formSerilize() 用于序列化表单中的数据,并将其自动整理成适合AJAX异步请求的URL地址格式. 2.cl ...
- 实战FFmpeg + OpenGLES--iOS平台上视频解码和播放
一个星期的努力终于搞定了视频的播放,利用FFmpeg解码视频,将解码的数据通过OpenGLES渲染播放.搞清楚了自己想知道的和完成了自己的学习计划,有点小兴奋.明天就是“五一”,放假三天,更开心啦. ...
- http,socket,进程通信,网络通信(1)
众所周知,网络通信本质上就是进程间通信,进程间通信有以下常见的通信方式: 1,管道pipe:管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用,进程的亲缘关系通常指父子进 ...