自动化部署三剑客
Jenkins + Ansible + Gitlab
持续交付
现场交付 => shell命令行 => 持续交付
版本控制系统:GitLab + GitHub
持续集成工具:Jenkins
部署工具(远程服务器端交付推送): Ansible + Saltstack + Chef
GitLab
GitLab 与 GitHub 的不同
GitHub:分布式在线代码托管仓库
个人版本可在线免费使用
企业版本收费且需要服务器安装
GitLab:分布式在线代码仓库托管软件
社区免费版本需要服务器安装
企业收费版本需要服务器安装
GitLab的优势和应用场景
开源免费,适合中小型公司将代码放置在该系统中
差异化的版本管理,离线同步以及强大分支管理功能
便捷的GUI操作界面以及强大账户权限管理功能
集成度很高,能够集成绝大多数的开发工具
支持内置HA,保证在高并发下仍旧实现高可用性
GitLab主要服务构成
Nginx静态Web服务器
GitLab-workhorse轻量级的反向代理服务器
Gitlab-shell用于处理Git命令和修改authorized keys列表
Logrotate日志文件管理工具
Postgresql数据库
Redis缓存服务器
Gitlab安装配置管理
利用VirtualBox创建测试服务器
安装Gitlab前系统预配置准备工作
关闭firewalld防火墙:保证本地PC可以访问虚拟机中的所有资源
# systemctl stop firewalld
: 关闭当前正在运行的防火墙服务# systemctl disable firewalld
: 禁用防火墙开机启动
关闭SELINUX(强制访问控制安全策略)并重启系统:保证该策略不会影响Gitlab的正常运行
# vi /etc/sysconfig/selinux
: 修改SELINUX=disabled# reboot
: 重启系统,完成SELINUX的禁用操作getenforce
: 查看SELINUX是否已经被禁用
安装Omnibus Gitlab-ce package
# yum -y install curl policycoreutils openssh-server openssh-clients postfix
: 安装Gitlab组件# curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ee/script.rpm.sh | sudo bash
: 配置YUM仓库sudo yum install postfix sudo systemctl enable postfix sudo systemctl start postfix
: 启动postfix邮件服务安装Gitlab-ce社区版本:
# yum install -y gitlab-ce
Omnibus Gitlab 等相关配置初始化并完成安装
证书创建与配置加载
创建本地私有密钥
mkdir -p /etc/gitlab/ssl
openssl genrsa -out "/etc/gitlab/ssl/gitlab.example.com.key" 2048
openssl req -new -key "/etc/gitlab/ssl/gitlab.example.com.key" -out "/etc/gitlab/ssl/gitlab.example.com.csr"
openssl x509 -req -days 365 -in "/etc/gitlab/ssl/gitlab.example.com.csr" -signkey "/etc/gitlab/ssl/gitlab.example.com.key" -out "/etc/gitlab/ssl/gitlab.example.com.crt"
openssl dhparam -out /etc/gitlab/ssl/dhparams.pem 2048
更改证书权限:
chmod 600 *
Nginx SSL 代理服务配置
-vi /etc/gitlab/gitlab.rb
- 修改external_url 'https://gitlab.example.com'
- 修改nginx['/redirect_http_to_https'] = true
- 修改nginx['ssl_certificate'] = '/etc/gitlab/ssl/gitlab.example.com.crt'
- 修改nginx['ssl_certificate_key'] = '/etc/gitlab/ssl/gitlab.example.com.key'
- 修改nginx['ssl_dhparam'] = '/etc/gitlab/ssl/dhparams.pem'
-vi /var/opt/gitlab/nginx/conf/gitlab-http.conf
- 找到server_name gitlab.example.com
,并在下面添加rewrite ^(.*)$ https://$host$1 permanent
-gitlab-ctl restart
- 编辑windows下的host文件,手动添加一条DNS记录10.110.16.20 gitlab.example.com
初始化Gitlab相关服务并完成安装
# gitlab-ctl reconfigure