CICD(一) GitLab的搭建与使用

GitLab的搭建与使用

GitLab介绍

  • 开源免费
  • 差异化的版本管理,离线同步机器强大的分支管理功能
  • 便捷的GUIO操作界面以及强大的权限管理
  • 集成度很高,能够集成绝大多数的开发工具
  • 支持内置HA,保证在高并发的情况下实现高可用性

Gitlab的服务构成

  • Nginx: 静态web服务器
  • GitLab-workhourse:轻量级的反向代理服务器
  • Git-shell: 用于处理Git命令以及修稿authorized keys列表
  • logrotate:日志文件管理
  • Postgresql:数据库
  • Redis: 缓存服务器

Gitlab的工作流程

  • 创建并克隆项目
  • 创建项目的Feature分支
  • 编码并提交至本分支
  • 推送项目分支至远程Gitlab服务器
  • 进行代码检查并提交Master主分支合并申请
  • 项目领导审查代码并确认合并申请

GitLab的安装与配置

  • 创建Centos7虚拟机
  • 登录服务器做预配置

    • 关闭firewalld以及开机自启动
    • 禁用Selinux,并重启机器
  • 安装Omnibus Gitlab-ce Package
[ ~]# yum -y install curl policycoreutils openssh-server openssh-client postfix vim curl-devel
[ ~]# curl -s https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash
[ gitlab]# sudo systemctl start postfix && sudo systemctl enable postfix
[ ~]# yum -y install gitlab-ce
  • 证书颁发
[ ~]# openssl genrsa -out "/etc/gitlab/ssl/gitlab.yeecall.cn.key" 2048
[ ~]# openssl req -new -key "/etc/gitlab/ssl/gitlab.yeecall.cn.key" -out "/etc/gitlab/ssl/gitlab.yeecall.cn.csr"
[ ~]# openssl x509 -req -days 3650 -in "/etc/gitlab/ssl/gitlab.yeecall.cn.csr" -signkey "/etc/gitlab/ssl/gitlab.yeecall.cn.key" -out "/etc/gitlab/ssl/gitlab.yeecall.cn.crt"

[ ~]# openssl dhparam -out /etc/gitlab/ssl/dhparams.pem 2048
[ ~]# chmod 600 /etc/gitlab/ssl/*
-rw------- 1 root root 424 Dec 22 22:44 /etc/gitlab/ssl/dhparams.pem
-rw------- 1 root root 1298 Dec 22 22:42 /etc/gitlab/ssl/gitlab.yeecall.cn.crt
-rw------- 1 root root 1082 Dec 22 22:40 /etc/gitlab/ssl/gitlab.yeecall.cn.csr
-rw------- 1 root root 1675 Dec 22 22:38 /etc/gitlab/ssl/gitlab.yeecall.cn.key
[ ~]# vim /etc/gitlab/gitlab.rb 
external_url ‘https://gitlab.yeecall.cn‘
nginx[‘redirect_http_to_https‘] = true
nginx[‘ssl_certificate‘] = "/etc/gitlab/ssl/gitlab.yeecall.cn.crt"
nginx[‘ssl_certificate_key‘] = "/etc/gitlab/ssl/gitlab.yeecall.cn.key"
nginx[‘ssl_dhparam‘] = "/etc/gitlab/ssl/dhparams.pem"
[ ~]# gitlab-ctl reconfigure
[ ~]# vim /var/opt/gitlab/nginx/conf/gitlab-http.conf 
server_name gitlab.yeecall.cn;
rewrite ^(.*)$ https://$host$1 permanent;
[ ~]# gitlab-ctl restart

Gitlab的使用

CICD(一) GitLab的搭建与使用

wanghuideMBP:Desktop wanghui$ mkdir repo
wanghuideMBP:Desktop wanghui$ cd repo/
wanghuideMBP:repo wanghui$ git -c http.sslVerify=false clone https://gitlab.yeecall.cn/root/test-repo.git
wanghuideMBP:test-repo wanghui$ vim test.py
wanghuideMBP:test-repo wanghui$ git add .
wanghuideMBP:test-repo wanghui$ git commit -m "first commit"wanghuideMBP:test-repo wanghui$ git -c http.sslVerify=false push origin master

Gitlab的应用

  • Gitlab后台管理
  • 开发视角的Gitlab

    • 代码提交
    • 代码合并
  • 运维视角的Gitlab

    • 账户管理
    • 权限管理
    • 资源监控等
  • 演示使用方法

    • 用户创建,密码与权限(dev,lead)
    • 加入代码仓库管理权限
  • dev开发人员提交代码流程
[ repo]# git -c ssl.Verify=false clone https://gitlab.yeecall.cn/root/test-repo.git   #使用dev克隆代码
[ repo]# cd test-repo/
[ test-repo]# git checkout -b release-1.0   #创建分支
[ test-repo]# vim test.py    #更改代码
print("this is a test code")
print("this is a test code for release-1.0")
[ test-repo]# git add .
[ test-repo]# git commit -m "release-1.0"
[ test-repo]# git -c http.sslVerify=false push origin release-1.0    #同步代码

用dev用户登陆gitlabweb页面,然后提出merge请求

创建merge请求

lead用户登陆gitlab批准合并请求。

相关推荐