Linux操作文档——git及相关应用


git相关概念说明
git是一种版本控制系统,是一个命令,是一种工具
gitlib是用于实现 git 功能的开发库
github是一个基于 git 实现的在线代码托管仓库,包含一个网站界面,向互联网开放
gitlab是一个基于 git 实现的在线代码仓库托管软件,一般用于在企业内部网络搭建 git 私服

注: gitlab-ce 社区版 ; gitlab-ee 是企业版,收费

一、git基础

1、git安装

[root@git ~]# yum -y install git
[root@git ~]# git config --global user.name "zhangsan"           //声明自己的名字
[root@git ~]# git config --global user.email "zhangsan@163.com"           //声明自己的邮箱
[root@git ~]# mkdir /data           //创建版本库目录
[root@git ~]# cd  /data
[root@git data]# git init           //初始化当前目录为版本库
初始化空的 Git 版本库于 /data/.git/
[root@git data]# ls .git/
branches  config  description  HEAD  hooks  info  objects  refs
文件夹说明文件夹说明
branches分支目录config定义目录特有的配置选项
description仅供git web使用HEAD指定当前的分支
hooksgit钩子文件info包含一个全局排除文件(exclude)
objects存放所有的数据内容refs指针文件
index暂存区文件

2、上传代码步骤

[root@git data]# vim readme.txt           //创建文件,模拟代码
123456789
[root@git data]# git add readme.txt           //单个文件上传
[root@git data]# git status            //查看暂存区
# 位于分支 master
#
# 初始提交
#
# 要提交的变更:
#   (使用 "git rm --cached <file>..." 撤出暂存区)
#
#	新文件:    readme.txt
#
[root@git data]# git rm --cached readme.txt           //把文件从暂存区撤销
rm 'readme.txt'
[root@git data]# git add .           //当前目录所有文件上传
[root@git data]# git commit -m "add readme.txt file"           //上传到版本库
[master(根提交) 0f7f688] add readme.txt file
 1 file changed, 1 insertion(+)
 create mode 100644 readme.txt
[root@git data]# vim readme.txt            //修改readme.txt内容
123456789
111111111
[root@git data]# git add .           //当前目录所有文件上传
[root@git data]# git diff readme.txt           //查看异同
[root@git data]# git commit -m "add readme.txt file"           //上传到版本库
[master 0282ca1] add readme.txt file
 1 file changed, 1 insertion(+)
[root@git data]# git status           //查看版本状态
[root@git data]# git log           //显示历史记录详细信息
commit 0282ca17c98007d872f7c57f22d9ca1ffc60b8bb
Author: zhangsan <zhangsan@163.com>
Date:   Mon Jul 20 17:00:28 2020 +0800

    add readme.txt file

commit 0f7f6884ce95c8b577ac40bfd399cb5efdc95d62
Author: zhangsan <zhangsan@163.com>
Date:   Mon Jul 20 16:59:14 2020 +0800

    add readme.txt file
[root@git data]# git log --oneline           //显示历史记录摘要信息
0282ca1 add readme.txt file
0f7f688 add readme.txt file
[root@git data]# git reset --hard HEAD^           //回滚到上个版本,HEAD^^上上版本,HEAD~10回滚到上10个版本
HEAD 现在位于 0f7f688 add readme.txt file
[root@git data]# git reset --hard 0f7f688           //通告git log 的版本号码回滚,仅写前7位就可
HEAD 现在位于 0f7f688 add readme.txt file
[root@git data]# git reflog           //回滚动作命令日志
0f7f688 HEAD@{0}: reset: moving to HEAD^
0282ca1 HEAD@{1}: commit: add readme.txt file
0f7f688 HEAD@{2}: commit (initial): add readme.txt file

3、分支操作

[root@git data]# git branch           //查看分支
* master
[root@git data]# git branch ops           //创建分支
[root@git data]# git checkout ops           //切换分支
切换到分支 'ops'
[root@git data]# git checkout -b dev           //创建并切换到新的分支
切换到一个新分支 'dev'
[root@git data]# git checkout master           //切换到主分支
切换到分支 'master'
[root@git data]# git merge dev           //合并分支(先切回master)
Already up-to-date.
[root@git data]# git branch -d dev           //删除分支
已删除分支 dev(曾为 0f7f688)。

二、gitlab配置

1、安装程序

[root@git ~]# yum -y install curl policycoreutils openssh-server openssh-clients postfix           //安装前提软件
[root@git ~]# wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-10.2.3-ce.0.el7.x86_64.rpm           //下载清华gitlab安装包
[root@git ~]# yum -y install gitlab-ce-10.2.3-ce.0.el7.x86_64.rpm           //yum安装
[root@git ~]# vim /etc/gitlab/gitlab.rb           //修改配置文件,指定ip地址
external_url 'http://192.168.1.10'
[root@git ~]# gitlab-ctl reconfigure           //配置启动 gitlab
[root@git ~]# gitlab-ctl status           //查看状态
[root@git ~]# gitlab-ctl start/stop/restart           //gitlab服务管理命令(开启/关闭/重启)

也可以yum源安装

[root@git ~]# vim /etc/yum.repo.d/gitlab_gitlab-ce.repo           //清华源
[gitlab-ce]
name=gitlab-ce
baseurl=http://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7
repo_gpgcheck=0
gpgcheck=0
enabled=1
gpgkey=https://packages.gitlab.com/gpg.key
[root@git ~]# yum -y install gitlab-ce

报错 502原因:未关闭防火墙,内存太小(建议4G以上)

2、登录gitlab

在这里插入图片描述

1、取消注册功能

登录gitlab–admin area(顶部菜单栏小扳手图标)–左侧面板settings–Sign-up Restrictions–去除勾选sign-up enabled
在这里插入图片描述

2、修改登录欢迎界面

登录gitlab–admin area–Appearance–填写管理员联系方式和logo–save
在这里插入图片描述
在这里插入图片描述

3、gitlab汉化

[root@git ~]# cat /opt/gitlab/embedded/service/gitlab-rails/VERSION           //查看版本
10.2.3
[root@git ~]# gitlab-ctl stop
[root@git ~]# git clone https://gitlab.com/xhang/gitlab.git
[root@git ~]# cat /root/gitlab/VERSION           //查看该汉化补丁的版本
[root@git ~]# tar zxf gitlab-patch-zh.tat.gz           //本地上传操作
[root@git ~]# cd gitlab/
[root@git gitlab]# git diff v10.2.3 v10.2.3-zh > ../10.2.3-zh.diff
[root@git gitlab]# patch -d /opt/gitlab/embedded/service/gitlab-rails -p1 < /root/10.2.3-zh.diff
[root@git gitlab]# gitlab-ctl restart

4、项目创建流程

1、创建group

登录gitlab–admin area–new group
在这里插入图片描述

访问权限说明
Private只有组成员才能看到
Internal只要登录的用户就能看到
Public所有人都能看到

2、创建用户

登录gitlab–admin area–new user–添加用户名、邮箱–create–edit–修改密码
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3、创建项目

登录gitlab–admin area–new project–注意选择组
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4、将成员添加进组

在这里插入图片描述
在这里插入图片描述

用户权限说明
Guest可以创建issue、发表评论,不能读写版本库
Reporter可以克隆代码,不能提交,测试、产品经理可以赋予这个权限
Developer可以克隆代码、开发、提交、push,开发人员可以赋予这个权限
Master可以创建项目、添加tag、保护分支、添加项目成员、编辑项目,核心RD负责人可以赋予这个权限
Owner可以设置项目访问权限 - Visibility Level、删除项目、迁移项目、管理组成员,开发组leader可以赋予这个权限

在这里插入图片描述

4、核心开发人员更新代码流程(管理员)

[root@git ~]# ssh-keygen -t rsa           //本地用户创建秘钥
[root@git ~]# cat /root/.ssh/id_rsa.pub           //复制公钥内容
[root@git ~]# git clone git@192.168.1.10:dev/web.git           //克隆下载项目
[root@git ~]# cd web/
[root@git web]# echo 123456 > new.txt           //修改文件内容
[root@git web]# git add .
[root@git web]# git commit -m "add new.txt"
[master a71ba98] add new.txt
 1 file changed, 1 insertion(+)
 create mode 100644 new.txt
[root@git web]# git push -u origin master           //推送上传代码
Counting objects: 4, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 274 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@192.168.1.10:dev/web.git
   a7461dc..a71ba98  master -> master
分支 master 设置为跟踪来自 origin 的远程分支 master。

复制公钥内容黏贴到web界面:右上角–用户–settings–SSH Keys
在这里插入图片描述
在这里插入图片描述

5、普通开发人员更新代码流程

[root@client ~]# ssh-keygen -t rsa           //本地用户创建秘钥
[root@client ~]# cat /root/.ssh/id_rsa.pub           //复制公钥内容
[root@client ~]# mkdir /data           //关联远程仓库
[root@client ~]# cd /data/
[root@client data]# git init
初始化空的 Git 版本库于 /data/.git/
[root@client data]# git remote add origin git@192.168.1.10:dev/web.git
[root@client data]# git pull origin master           //下载同步代码
[root@client data]# git config --global user.email "dev01@qq.com"           //创建分支
[root@client data]# git config --global user.name "dev01"
[root@client data]# git checkout -b ops
切换到一个新分支 'ops'
[root@client data]# echo 6666666 > new111.txt           //修改代码
[root@client data]# git add .
[root@client data]# git commit -m "add new111.txt"
[ops 5a120b6] add new111.txt
 1 file changed, 1 insertion(+)
 create mode 100644 new111.txt
[root@client data]# git push -u origin ops           //推送dev分支(普通用户无权推送master)
Counting objects: 4, done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 296 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: 
remote: To create a merge request for ops, visit:
remote:   http://192.168.1.10/dev/web/merge_requests/new?merge_request%5Bsource_branch%5D=ops
remote: 
To git@192.168.1.10:dev/web.git
 * [new branch]      ops -> ops
分支 ops 设置为跟踪来自 origin 的远程分支 ops。

在web界面创建merge请求
在这里插入图片描述
在这里插入图片描述
同意merge请求
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、GitLab与Jenkins持续集成平台使用方法

1、安装Jenkins

[root@git ~]# yum -y install java
[root@git ~]# wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/redhat/jenkins-2.222-1.1.noarch.rpm
[root@git ~]# yum -y install jenkins-2.222-1.1.noarch.rpm
[root@git ~]# vim /etc/sysconfig/jenkins
JENKINS_USER="root"
JENKINS_PORT="8081"           //新版GitLab的服务端口为8080,避免和GitLab的服务端口相冲突
[root@git ~]# systemctl start jenkins
[root@git ~]# systemctl enable jenkins
jenkins.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig jenkins on
[root@git ~]# cat /var/lib/jenkins/secrets/initialAdminPassword
5e254b49f833401384b33d3bb4cdae8a           //把密码输入以下页面

最新版安装方法

[root@git ~]# cd /etc/yum.repos.d/
[root@git yum.repos.d]# wget http://pkg.jenkins.io/redhat/jenkins.repo
[root@git yum.repos.d]# rpm --import http://pkg.jenkins.io/redhat/jenkins.io.key
[root@git yum.repos.d]# yum -y install jenkins

注意:如果安装jenkins后没有修改配置为root,脚本执行如果有权限问题,解决方法

[root@git ~]# vim /etc/passwd           //修改jenkins登录shell为/bin/bash
jenkins:x:990:985:Jenkins Automation Server:/var/lib/jenkins:/bin/bash
[root@git ~]# vim /root/.bash_profile           //修改jenkins服务器的本地profile
export PS1='[\u@\h \W]\$'
[root@git ~]# source /root/.bash_profile
[root@git ~]# isudo           //赋予jenkins用户sudo权限
jenkins ALL=(ALL)       NOPASSWD: ALL

在这里插入图片描述

2、复制插件包到服务器

插件下载地址:http://updates.jenkins-ci.org/download/plugins/ ,在有网的环境下,把自己需要的插件下载好,然后再从本地上传。

[root@git ~]# tar zxf jenkins-plugins.tar.gz 
[root@git ~]# cp plugins/* /var/lib/jenkins/plugins/
[root@git plugins]# systemctl restart jenkins

在这里插入图片描述
在这里插入图片描述

3、设置中文

搜索关键词Localization,装完这个插件无需设置重启后即可以了,首选这种插件
在这里插入图片描述
在这里插入图片描述

4、修改admin用户密码

右上角–admin点击下拉三角–Configure–Password字段–修改密码–save保存
在这里插入图片描述
在这里插入图片描述

5、关联gitlab

点击左上角logo–回到主页面–选择新项目“New Item”–填写项目名–选择项目类型“Freestyle project”–save保存
在这里插入图片描述
在这里插入图片描述
配置项目–源代码管理–git–填写存储库网址(git@IP:dev/web.git)–报红字错误,则需要添加私钥认证–如果认证成功–save保存
在这里插入图片描述
选择项目–左侧选择“build now”–下面构建历史出现蓝色标志–选择蓝色标志下拉列表–console output–输出执行过程
在这里插入图片描述
jenkins服务器上查看代码

[root@git ~]# cd /var/lib/jenkins/workspace
[root@git workspace]# ls
web
[root@git workspace]# cd web/
[root@git web]# ls
new111.txt  new.txt  README.md

四、jenkins关联gitlab,实现自动构建上传代码

1、在gitlab服务器上部署项目代码

在gitlab服务器上增加gitlab主机和jenkins的SSH秘钥
在这里插入图片描述

[root@gitlab ~]# cd /root
[root@gitlab ~]# git clone https://gitee.com/kangjie1209/monitor.git           //在gitee码云上下载项目代码
[root@gitlab ~]# mkdir /web           //gitlab服务器创建本地代码库
[root@gitlab ~]# cd /web
[root@gitlab web]# cp -rp /root/monitor/*  /web
[root@gitlab web]# git init           //在gitlab本地服务器上传代码到gitlab
初始化空的 Git 版本库于 /web/.git/
[root@gitlab web]# git config --global user.name "zhangsan"
[root@gitlab web]# git config --global user.email zhangsan@163.com
[root@gitlab web]# git remote add origin git@192.168.1.10:dev/web.git
[root@gitlab web]# git add .
[root@gitlab web]# git commit -m "Initial commit"
[root@gitlab web]# git push -u origin master

登录gitlab,创建新的web项目
在这里插入图片描述
登录jenkins,新建自由项目web
在这里插入图片描述
在这里插入图片描述
build now:手动同步测试
在这里插入图片描述
开启一台主机,安装nginx

[root@nginx ~]# yum -y install epel-release
[root@nginx ~]# yum -y install nginx
[root@nginx ~]# systemctl start nginx

2、jenkins实现脚本上传网站代码

[root@jenkins ~]# mkdir /scripts
[root@jenkins ~]# vim /scripts/web.sh           //在jenkins上编写上传nginx的脚本
#!/bin/sh
#/var/lib/jenkins/workspace/web/目录在手动同步测试后才会出现
CODE_DIR=/var/lib/jenkins/workspace/web/
WEB_DIR=/usr/share/nginx
IP=192.168.1.30
TIME=`date +%F-%H-%M-%S`
cd $CODE_DIR && tar zcf /tmp/web-${TIME}.tar.gz  ./*
scp /tmp/web-${TIME}.tar.gz $IP:$WEB_DIR
ssh root@$IP "cd $WEB_DIR && mkdir web-$TIME"
ssh root@$IP "cd $WEB_DIR && tar xf web-${TIME}.tar.gz -C web-$TIME && rm -rf web-${TIME}.tar.gz"
ssh root@$IP "cd $WEB_DIR && rm -rf html && ln -s web-$TIME html"
[root@jenkins ~]# ssh-copy-id root@192.168.1.30           //jenkins传输公钥到nginx
[root@jenkins ~]# sh /scripts/web.sh           //执行脚本

手动构建,关联脚本,自动上传
项目web – configure – build – Execute shell – sh /scripts/web.sh
在这里插入图片描述

3、jenkins关联gitlab,实现自动构建上传代码

web项目-- configure – build triggers – 勾选最长选项 – 点击高级advanced
– 选择Filter branches by name --在include填写master – 点击generate生成令牌 – 复制令牌和触发器顶部url路径 – save保存
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
更新push代码,测试自动构建上传

[root@gitlab web]# vim index.html 
[root@gitlab web]# git add .
[root@gitlab web]# git commit -m "modify index.html"
[root@gitlab web]# git push -u origin master
posted @ 2020-07-20 21:54  高中僧  阅读(43)  评论(0)    收藏  举报