gitlab 介绍与本地安装
Gitlab代码库说明
以前我们使用GitLite进行代码管理,并无可用管理界面和组件(plugins),导致配置自动化CI/CD无法实现,改用Gitlab进行代码库管理。
使用Gitlab搭配SonarQube和Jekins,实现代码自动审查、自动打版功能和最终的自动发布功能,减少人工干预和预知错误处理。
GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务。
可通过Web界面进行访问公开的或者私人项目。它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。团队成员可以利用内置的简单聊天程序(Wall)进行交流。它还提供一个代码片段收集功能可以轻松实现代码复用。
Gitlab官网:https://about.gitlab.com/installation/#centos-7
在CentOS上,以下命令也将在系统防火墙中打开HTTP和SSH访问。
sudo yum install -y curl policycoreutils openssh-server openssh-clients postfix
sudo systemctl enable sshd
sudo systemctl start sshd
sudo systemctl enable postfix
sudo systemctl start postfix
sudo firewall-cmd --permanent --add-service=http
sudo systemctl reload firewalld
添加GitLab仓库,并安装到服务器上
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
sudo yum install gitlab-ce
手动下载文件,然后使用rpm命令安装
curl -LJO https://packages.gitlab.com/gitlab/gitlab-ce/packages/el/7/gitlab-ce-XXX.rpm/download
rpm -i gitlab-ce-XXX.rpm
启动GitLab
sudo gitlab-ctl reconfigure
打开浏览器访问,默认80端口
你第一次的访问,需要设置初始管理员帐户的密码。默认的帐户的用户名是root。
常用配置
修改内置nginx端口号,默认是80,修改 vim var/opt/gitlab/nginx/conf/gitlab-http.conf
gitlab本身采用80端口,配置GitLab的URL,修改 vim /etc/gitlab/gitlab.rb
external_url 'http://127.0.0.1:8222'
每次重新配置,都需要执行sudo gitlab-ctl reconfigure 使之生效。
日常管理
常用命令gitlab-ctl start|stop|status|restart 比如查看状态:
gitlab-ctl status
查看日志 /var/log/gitlab 可以进去查看访问日志以及报错日志等。
gitlab-ctl tail #查看所有日志
gitlab-ctl tail nginx/gitlab_access.log #查看nginx访问日志
卸载GitLab
通过以下几步就可以彻底卸载gitlab
- 停止gitlab,执行sudo gitlab-ctl stop
- 卸载gitlab,执行sudo rpm -e gitlab-ce
- 查看gitlab进程,杀掉第一个守护进程kill -9 pid
- 删除gitlab文件,执行find / -name gitlab|xargs rm -rf删除所有包含gitlab的文件及目录,再执行gitlab-ctl uninstall删除自动在root下备份的配置文件。
当项目越来越庞大之后,不可避免的要拆分成多个子模块,我们希望各个子模块有独立的版本管理,并且由专门的人去维护,这时候我们就要用到git的submodule功能。
常用命令
git clone <repository> --recursive 递归的方式克隆整个项目
git submodule add <repository> <path> 添加子模块
git submodule init 初始化子模块
git submodule update 更新子模块
git submodule foreach git pull 拉取所有子模块
子模块的库还是原来的,重新创建了新的项目,把本地主项目添加进去上传远程仓库。剩下的就是把主项目(linlong-cloud-aggregation)跟子模块关联起来。
配置子模组
$ git submodule add http://172.27.8.191/root/linlong-cloud-admin.git linlong-cloud-admin
提交子模组配置代码
$ git add --all && git commit –m “20190220增加linlong-cloud-admin子模组”
$ git push
到此就完成子模组新增配置
现在你就在项目(linlong-cloud-aggregation)里的子目录下有了一个 linlong-cloud-admin 项目。你可以进入那个子目录,进行变更,加入你自己的远程可写仓库来推送你的变更,从原始仓库拉取和归并等等。
拉取子模组代码
$ git clone http://172.27.8.191/root/linlong-cloud-aggregation.git
将子模组进行初始化
$ git submodule init && git submodule update
切换子模组分支
$ git submodule foreach git checkout dev
删除子模块
有时子模块的项目维护地址发生了变化,或者需要替换子模块,就需要删除原有的子模块。
删除子模块较复杂,步骤如下:
- rm -rf 子模块目录 删除子模块目录及源码;
- vi .gitmodules 删除项目目录下.gitmodules文件中子模块相关条目;
- vi .git/config 删除配置项中子模块相关条目;
- rm .git/module/* 删除模块下的子模块目录,每个子模块对应一个目录,注意只删除对应的子模块目录即可;
执行完成后,再执行添加子模块命令即可,如果仍然报错,执行如下:
git rm --cached 子模块名称
完成删除后,提交到仓库即可。
使用子模组命令 git client 需要使用 Git-2.20.1-64-bit.exe 版本,可到 https://www.git-scm.com/download/win 下载
使用 Gitlab 的 WebHooks 触发 Jenkins 的自动编译和自动发布工作,配置请看下图: