第一天:DevOps与CI/CD

DevOps的初识

DevOps定义

DevOps是Development和Operations的组合,也就是开发和运维的简写
DevOps集文化理念、实践与工具于一身,可以提高组织高速交付应用程序和服务的能力,与使用传统软件开发和基础设施管理流程相比,能够帮助企业更快速的发展和改进产品,这种速度使企业能够更好地服务于客户,并在市场上高效地参与竞争
DevOps是针对企业中的研发人员、运维人员和测试人员的工作理念,是他们在应用开发、代码部署和质量测试等整条生命周期中协作和沟通的最佳实践,DevOps强调整个组织的合作以及交付和基础设施变更的自动化、从而实现持续集成、持续部署和持续交付

DevOps平台

1、代码托管(gitlab/svn)
2、项目管理(jira/禅道/Teambition)
3、运维平台(腾讯蓝鲸/自主研发平台)
4、持续交付(Jenkins/gilab)
第一天:DevOps与CI/CD_第1张图片

DveOps的优势

1、速度:应用版本快速的迭代更新,以更好地适应不断变化的市场需求
2、快速交付:更快的将应用交付至生产环境
3、可靠性:保证应用交付的结果是成功的
4、规模:可以在大规模环境下且可靠的交付应用
5、增强合作:建立适应DevOps文化模式的团队,开发人员和运维人员协同工作
6、安全性:在快速迭代的同时保证应用的质量

为什么要使用DevOps

DevOps强调团队协作、相互协助、持续发展,然而传统的模式是开发人员只顾开发程序,运维只负责基础环境管理和代码部署及监控等,其并不是为了
一个共同的目标而共同实现最终的目地,而DevOps则实现团队作战,即无论是开发、运维还是测试,都为了最终的代码发布、持续部署和业务稳定而付出
各自的努力,从而实现产品设计、开发、测试和部署的良性循环,实现产品的最终持续交付

CI/CD简介

什么是持续集成

持续集成是指多名开发者在开发不同功能代码的过程当中,可以频繁的将代码行合并到一起并且相互不影响工作
第一天:DevOps与CI/CD_第2张图片

什么是持续部署

是基于某种工具或平台实现代码自动化的构建、测试和部署到线上环境以及实现交付高质量的产品,持续部署到某种程度上代表了一个开发团队的更新迭代速率
第一天:DevOps与CI/CD_第3张图片

代码部署流程

1、测试环境:环境代码和 数据库是独立的
2、预发布环境:一般是连接的生产环境的数据库,用来检测 最新的代码 是否正常
3、生产环境
预发布就是 测试环境 和 生产环境的一个过渡,用来提前检测 最新代码 经测试环境后,上到正式环境是否异常,所以 一般 预发布环境测试时,测试组都会比较小心,尽量避免脏数据

CI/CD流程

第一天:DevOps与CI/CD_第4张图片

Git简介

Git:由linux之父林纳斯托瓦兹在2005年开发的一个分布式持续集成工具,设计之初就具备了以下优点:
1、可靠性:数据的上传和下载必须是安全的、一致的,所有行为都要进行验证,数据的变更通过不同的版本进行逻辑隔离
2、分布式:linus Torvalds认为之前的集中式版本控制系统性能太差,于是git的代码恢复不依赖于中央服务器,而是每个开发电脑都是一个本地仓库,可用于代码提交与回滚
3、高效:Git基于分布式的功能实现代码的快速提交与秒级回滚
Gitlab:基于git的一个私有代码仓库

GitLab安装

安装环境要求

https://docs.gitlab.com/ce/install/requirements.html

国内下载地址

https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/

安装依赖环境

[root@xiaomao ~]#  yum install -y curl  policycoreutils-python openssh-server

安装postfix

[root@xiaomao ~]# sudo yum install -y postfix

开始安装

[root@xiaomao ~]# rpm -ivh gitlab-ce-11.10.8-ce.0.el7.x86_64.rpm

安装成功

第一天:DevOps与CI/CD_第5张图片

配置GitLab站点Url

GitLab默认的配置文件路径是/etc/gitlab/gitlab.rb

默认的站点Url配置项是:

external_url 'http://gitlab.example.com'
[root@xiaomao ~]# vim  /etc/gitlab/gitlab.rb
[root@xiaomao ~]# grep "^[a-Z]" /etc/gitlab/gitlab.rb
external_url 'http://192.168.140.128'
#使用邮件功能
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.163.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "[email protected]"
gitlab_rails['smtp_password'] = "VWXXRNFNZDIKJOER"
gitlab_rails['smtp_domain'] = "163.com"
gitlab_rails['smtp_authentication'] = :login
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['gitlab_email_from'] = "[email protected]"
user["git_user_email"] = "[email protected]"

重新启动

[root@xiaomao ~]# gitlab-ctl reconfigure

完成后将会看到如下输出

Running handlers:
Running handlers complete
Chef Client finished, 14/643 resources updated in 01 minutes 06 seconds
gitlab Reconfigured!

访问

第一天:DevOps与CI/CD_第6张图片

修改密码

密码最少8位

登录

管理员密码:root
密码:12345678
第一天:DevOps与CI/CD_第7张图片

gitlab安装目录

/etc/gitlab #配置文件目录
/run/gitlab #运行pid目录
/opt/gitlab #安装目录
/var/opt/gitlab #数据目录
/var/log/gitlab #日志目录

GitLab基本功能使用

新建用户

第一天:DevOps与CI/CD_第8张图片
第一天:DevOps与CI/CD_第9张图片
在这里插入图片描述

创建成功

第一天:DevOps与CI/CD_第10张图片

修改用户密码

第一天:DevOps与CI/CD_第11张图片
在这里插入图片描述
最后点击保存就行

新建用户登录测试

第一天:DevOps与CI/CD_第12张图片

第一次登录需要修改密码

第一天:DevOps与CI/CD_第13张图片
第一天:DevOps与CI/CD_第14张图片

关闭注册页面

在超级管理员用户下关掉它
第一天:DevOps与CI/CD_第15张图片
最后点击保存
第一天:DevOps与CI/CD_第16张图片

新建权限组

第一天:DevOps与CI/CD_第17张图片
第一天:DevOps与CI/CD_第18张图片

组创建成功

第一天:DevOps与CI/CD_第19张图片

添加新用户到组里面

第一天:DevOps与CI/CD_第20张图片
新用户登录查看是否添加到组里面
第一天:DevOps与CI/CD_第21张图片

新用户创建项目

第一天:DevOps与CI/CD_第22张图片
第一天:DevOps与CI/CD_第23张图片
第一天:DevOps与CI/CD_第24张图片

GitLab基础命令

# 停止gitlab
[root@xiaomao ~]# gitlab-ctl  stop
#启动gitlab
[root@xiaomao ~]# gitlab-ctl  start
#重启gitlab
[root@xiaomao ~]# gitlab-ctl  restart
# 查看组件的运行状态
[root@xiaomao ~]# gitlab-ctl   status
# 查看单个组件的运行日志
[root@xiaomao ~]# gitlab-ctl   tail nginx

GitLab使用

# 设置全局用户名
[root@xiaomao ~]# git config --global user.name "zhangxiaoming"
# 设置全局邮箱
[root@xiaomao ~]# git config --global user.email "[email protected]"
#列出用户全局设置
[root@xiaomao ~]# git config --global --list
user.name=zhangxiaoming
user.email=1249796886@qq.com
#克隆项目到本地
[root@xiaomao ~]# git clone http://192.168.140.128/zhangxiaoming/devops.git
Cloning into 'devops'...
Username for 'http://192.168.140.128': zhangxiaoming(用户名)
Password for 'http://[email protected]':(密码)
[root@xiaomao ~]# cd devops/
[root@xiaomao devops]# touch README.md
[root@xiaomao devops]# cat README.md
11111111111111111111111111111111111123
11111111111111111111111111111111111123
111111111111111111111111111111111123
#添加指定文件、目录或当前目录下所有数据到暂存区
[root@xiaomao devops]# git add README.md
#提交文件到本地工作区(本地仓库)
[root@xiaomao devops]# git commit -m "v1"
[master e112de0] v2
 1 file changed, 1 insertion(+)
 #提交代码到服务器
[root@xiaomao devops]# git push
 #查看本地工作区和暂存区的状态
[root@xiaomao devops]# git status

查看本地仓库

第一天:DevOps与CI/CD_第25张图片

# 拉取最新代码
[root@xiaomao devops]# git pull
#查看当前所属分支
[root@xiaomao devops]# git branch
* master
#查看本地工作区的状态
[root@xiaomao devops]# git status
#查看操作日志
[root@xiaomao devops]# git log
#定义忽略某些指定文件或者目录不上传至gitlab
[root@xiaomao devops]# ls
mysql.conf  README.md
[root@xiaomao devops]# cat .gitignore
mysql.conf
[root@xiaomao devops]# pwd
/root/devops
[root@xiaomao devops]# git add ./
[root@xiaomao devops]# git commit -m "add gitignore"
[root@xiaomao devops]# git push
# git代码回滚,HEAD为当前版本,加一个^为上一个,^^为上上一个版本
[root@xiaomao devops]# git  reset --hard  HEAD^
HEAD is now at 0bd3674 add v2
[root@xiaomao devops]# git  reset --hard  HEAD^^
HEAD is now at 5683e9a add gitignore1
# 回退到指定id的版本
[root@xiaomao devops]# git log   #查看版本的id号
[root@xiaomao devops]# git reset --hard 59f8c51
HEAD is now at 59f8c51 v2

创建分支

zhangxiaoming用户登录
第一天:DevOps与CI/CD_第26张图片
第一天:DevOps与CI/CD_第27张图片

git checkout -b develop #创建并切换到一个新分支
git checkout develop #切换分支

工作流程解析
1、工作区:clone的代码或者开发自已编写的代码文件所在的目录,通常是代码所在的一个服务的目录名称
2、暂存区:用于存储在工作区中的代码进行修改后的文件所保存的地方,使用git add添加
3、本地仓库:用于提交存储在工作区和暂存区中改过的文件地方,使用git commit提交
4、远程仓库:多个开发共同协作提交代码的仓库,即gitlab服务器
在这里插入图片描述

常见的分支结构

1、单分支模型:只有master分支
2、生产/开发模型:master分支与develop类型分支 (常用)
3、特性/发布模型:master/develop/feature类型分支
4、开发/发布/分离模型:master/develop/feature/release类型分支
5、开发/发布/缺陷分离模型:master/develop/feature/release/hotfix类型分支

Gitlab 实现 分支 合并

xiaomao 192.168.140.128
xiaomao1 192.168.140.129

#切换到指定的分支代码
[root@xiaomao1 opt]# git clone -b develop http://192.168.140.128/zhangxiaoming/devops.git
Cloning into 'devops'...
Username for 'http://192.168.140.128': zhangxiaoming
Password for 'http://[email protected]':
#修改代码重新提交
[root@xiaomao1 devops]# git add ./
[root@xiaomao1 devops]# git commit -m "v9"
[root@xiaomao1 devops]# git push
#开始合并代码
[root@xiaomao devops]# git pull
[root@xiaomao devops]# git  merge origin/develop
[root@xiaomao devops]# git push

你可能感兴趣的:(Linux学习笔记)