版本控制系统 Gitlab Github
持续集成工具 Jenkins
部署工具 Ansible Saltstack Chef
本文通过Jenkins + Ansible + Gitlab
实现自动化部署。
Gitlab介绍
Gitlab是一个开源分布式版本控制系统,由Ruby开发,有管理项目源代码、版本控制、代码复用与查找等功能。
- gitlab与github的区别:
github是分布式在线代码托管仓库,个人版本可直接在线免费使用,企业版本收费且需要服务器安装。
gitlab是分布式在线代码仓库托管软件,分社区免费版本与企业收费版本,都需要服务器安装。
- gitlab的优势:
1. 开源免费,社区免费版本适合中小型公司;
2. 差异化的版本管理,离线同步以及强大分支管理功能;
3. 便捷的GUI操作界面以及强大账户权限管理功能;
4. 集成度很高,能够集成绝大多数的开发工具;
5. 支持内置HA,保证在高并发下仍旧实现高可用性。
- gitlab主要服务构成:
Nginx 静态Web服务器
Gitlab-workhorse 轻量级的反向代理服务器
Gitlab-shell 用于处理Git命令和修改authorized keys列表
Logrotate 日志文件管理工具
Postgresql 数据库
Redis 缓存服务器
- gitlab的工作流程:
1. 创建并克隆项目
2. 创建项目某Feature分支
3. 编写代码并提交至该分支
4. 推送该项目分支至远程Gitlab服务器
5. 进行代码检查并提交Master主分支合并申请
6. 项目领导审查代码并确认合并申请
环境准备
3台机器需要做环境准备。
- 角色划分:
Jenkins + Ansible 192.168.30.128
test host 192.168.30.129
gitlab 192.168.30.130
- 关闭防火墙和selinux:
# systemctl stop firewalld && systemctl disable firewalld
# setenforce 0 && sed -i 's/=enforcing/=disabled/g' /etc/selinux/config
- 添加本地dns:
# vim /etc/hosts
192.168.30.128 jenkins.lzxlinux.com
192.168.30.129 test.lzxlinux.com
192.168.30.130 gitlab.lzxlinux.com
在Windows电脑hosts文件中添加本地dns:
192.168.30.128 jenkins.lzxlinux.com
192.168.30.129 test.lzxlinux.com
192.168.30.130 gitlab.lzxlinux.com
Gitlab安装配置管理
- 安装gitlab-ce:
# yum install -y curl policycoreutils openssh-server openssh-clients postfix #安装gitlab组件
# curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo bash #配置yum仓库
# systemctl start postfix && systemctl enable postfix #启动postfix邮件服务
# yum install -y gitlab-ce
- 证书创建与配置加载:
# mkdir -p /etc/gitlab/ssl
# openssl genrsa -out "/etc/gitlab/ssl/gitlab.lzxlinux.com.key" 2048
# openssl req -new -key "/etc/gitlab/ssl/gitlab.lzxlinux.com.key" -out "/etc/gitlab/ssl/gitlab.lzxlinux.com.csr"
Country Name (2 letter code) [XX]:cn
State or Province Name