1.CI/CD介绍
把开发工作流程分为以下几个阶段:
编码 → 构建 → 集成 → 测试 → 交付 → 部署
1.1概述
持续集成(CI):
持续集成(Continuous integration)是指开发者在代码的开发过程中,可以频繁的(一天多次)将代码合并到主干源码仓库,并立刻进行构建、(单元)测试。根据测试结果,我们可以确定新代码和原有代码能否正确地集成在一起
它的好处主要有两个
1. 快速发现错误。每完成一点开发,就集成到主干,可以快速发现错误,定位错误也比较容易
2. 防止分支大幅偏离主干。如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成
持续交付:
持续交付(Continuous delivery)指的是在持续集成的基础上,将集成后的代码部署到更贴近真实运行环境(类生产环境)中。比如,我们完成单元测试后,可以把代码部署到连接数据库的Staging环境中,做更多的测试。如果代码没有问题,就可以手动部署到生产环境
持续部署
持续部署(continuous deployment)是持续交付的下一步,指的是代码通过评审以后,部署到生产环境
总的来说,CI/CD提供了一个优秀的 DevOps 环境。对于整个开发团队来说,能很大地提升开发效率,好处与挑战并行。无论如何,频繁部署、快速交付以及开发测试流程自动化都将成为未来软件工程的重要组成部分
1.2 jenkins概述
enkins 概述:是一个开源软件项目,是基于Java开发的一种持续集成、交付、部署的基于web界面的平台,用于自动化各种任务,包括构建、测试和部署软件。
1.3.GitLab
gitlab是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的 Git 项目仓库,可通过 Web界面进行访问公开的或者私人项目。Ruby on Rails 是一个可以使你开发、部署、维护 web 应用程序变得简单的框架
1.4.项目部署方式
项目部署方式分2种方式:手动部署、自动化部署
手动部署:
自动部署:
“自动化” 的具体体现:向版本库提交新的代码后,应用服务器上自动部署,用户或测试人员使用的马上就是最新的应用程序
1.5.集群和分布式
通过此图可以形象的解释集群和分布式的含义:
单机结构中的全栈意思是:即做前端的js、css、html等,又做后端的java等
集群结构中的全栈意思是:同时有两个或者更多的人即做前端,又做后端
分布式的意思就是此图所表示的:将后端和前端分开,各做各的
2.搭建gitlab
2.1实验环境准备
2.1.1实验部署
按照试验拓扑修改主机名和配置ip地址,关闭所有主机的防火墙和selinux
#systemctl stop firwalld && systemctl disable firewalld
#setenfoce 0
#vim /etc/sysconfig/selinux
2.1.2安装gitlab需要组件
[root@cong11 ~]# yum install -y curl policycoreutils openssh-server openssh-clients postfix policycoreutils-python cronie
2.1.3默认,使用postfix发送邮件
[root@cong11 ~]# systemctl enable postfix
[root@cong11 ~]# systemctl start postfix
2.1.4安装gitlab
[root@cong11 ~]# yum install -y gitlab-ce
2.1.5上传软件包
[root@cong11 ~]# ls
2.1.6安装gitlab
[root@cong11 ~]# rpm -ivh gitlab-ce-12.0.2-ce.0.el7.x86_64.rpm
警告:gitlab-ce-12.0.2-ce.0.el7.x86_64.rpm: 头V4 RSA/SHA1 Signature, 密钥 ID f27eab47: NOKEY
准备中... ################################# [100%]
正在升级/安装...
1:gitlab-ce-12.0.2-ce.0.el7 ################################# [100%]
2.1.7 配置gitlab访问地址
[root@cong11 ~]# vim /etc/gitlab/gitlab
external_url 'http://192.168.1.11' #修改标红部分
2.1.8重置 GitLab
[root@cong11 ~]# gitlab-ctl reconfigure
2.1.9查看端口
gitlab默认使用内置的nginx做为web界面。
注:如果后期 web 界面访问时,总报 502,要把防火墙清空规则,另外内存要大于4G,不然以后内存不足,也报 502
[root@cong11 ~]# netstat -antup | grep 80
[root@cong11 ~]# ps -ef | grep 3810|grep -v "grep"
2.1.10登录gitlab
http://192.168.1.11
设置好密码后,使用新设的密码登录
1.2Gitlab使用
关闭 gitlab: # gitlab-ctl stop
启动 gitlab: # gitlab-ctl start
重启 gitlab: # gitlab-ctl restart
gitlab 主配置文件:/etc/gitlab/gitlab.rb #可以自定义一些邮件服务等
日志地址:/var/log/gitlab/ #对应各服务
服务地址:/var/opt/gitlab/ #对应各服务的主目录
仓库地址:/var/opt/gitlab/git-data #记录项目仓库等提交信息
重置配置:gitlab-ctl reconfigure #不要乱用
重启服务:gitlab-ctl stop/start/restart #启动命令