通过jenkins+gitlab构建CI/CD流水线

01.概述

1.Devops是什么

在这里插入图片描述
在这里插入图片描述
开发 development
运维 operations

2.Devops能干嘛

`Devops 是一种理念 一种文化  对应的方法论是6sigma、约束理论等管理模式`
提高产品质量
1 自动化测试
2 持续集成
3 代码质量管理工具
4 程序员鼓励师

3.Devops如何实现

既然这么好?为什么有些公司没有
设计架构规划-代码的存储-构建-测试、预生产、部署、监控

遥想当年,软件程序员的大部分办公司那时还被称作实验室,程序员那时还叫做科学家。为了开发出一套优秀的软件,程序员们必须深入了解他们需要的应用相关的所有问题。他们必须清楚知道这个软件应用在什么场合,这个软件是必须在什么系统上运行。本质上说,程序员对所要开发的软件的所有环节都有透彻的了解,从规格说明书编写、到软件开发、到测试、到部署、再到技术支持。
随着用户需求增多,产业规模逐渐扩大,用户不断的进行更多的索求。更快的速度,更多的功能,更多的用户,更多的所有所有。
我们的老一辈程序员们将很难在这种爆发性的过度的需求索取中幸存。最好的取胜办法就是往不同的方向进化成不同的新物种。很快,程序员这个称号就开始绝迹于江湖,而那些叫做开发者、软件工程师、网络管理员、数据库开发者、网页开发者、系统架构师、测试工程师等等更多的新物种就开始诞生。快速进化和快速适应外界的挑战成为了他们的DNA的一部分。这些新的种族可以在几个星期内就完成进化。网页开发者很快就能进化成后台开发者,前台开发者,PHP开发者,Ruby开发者,Angular开发者…多得让人侧目。

这种分工的产生是一种必然发展的结果,每个人各司其职,各自负责其中一环,使劳动力和资本得到最大程度的利用。也是符合亚当·斯密对社会分工理论的概述

题外话:

亚当斯密认为,分工的起源是由人的才能具有自然差异,
那是起因于人类独有的交换与易货倾向,
交换及易货系属私利行为,其利益决定于分工,
假定个人乐于专业化及提高生产力,经由剩余产品之交换行为,
促使个人增加财富,此等过程将扩大社会生产,促进社会繁荣,并达私利与公益之调和。

在这里插入图片描述

很快他们就都忘却了他们都是起源于程序员这个共同的祖先的事实,忘却了曾经有过这么一个单纯且平静的,想要让这个世界变得更好的科学家。然后他们开始不断的剑拔弩张,都声称自己才是“程序员”的纯血统继承人。

随着时间的转移,各门各派开始独占山头,很少进行交流互动,只有在迫不得已的时刻才会进行沟通。他们开始不再为同源的遥远的同宗兄弟们的成功而欢呼雀跃,甚至再也不会时把的遥寄张明信片进行嘘寒问暖。

但是在深夜仰望星空的时候,他们还是会发现他们的心底深处的程序员基因还是会不停的闪烁着,期盼着这闪烁的火花能照亮整个银河系并带来和平。 正所谓天下大势合久必分,分久必合。

02.Git版本控制系统

1.版本控制系统简介

  vcs	`version control system` (windows软件 SVN linux软件 gitlab)
  版本控制系统是一种记录一个或若干个文件内容变化,以便将来查阅特定版本内容情况的系统
  记录文件的所有历史变化
  随时可恢复到任何一个历史状态
  多人协作开发

2.为什么需要版本控制系统

在这里插入图片描述
在这里插入图片描述

3.常见版本管理工具

SVN–>windows
集中式的版本控制系统,只有一个中央数据仓库,如果中央数据仓库挂了或者不可访问,所有的使用者无法使用SVN,无法进行提交或备份文件。

集中式(SVN) 分布式(git)
是否有中央服务器 有。开发人员需要从中央服务器获得最新版本的项目然后在本地开发,开发完推送给中央服务器。因此脱离服务器开发者是几乎无法工作的 没有中央服务器,开发人员本地都有 Local Repository
网络依赖 必须要联网才能工作,而且对网络的依赖性较强,如果推送的文件比较大而且网络状况欠佳,则提交文件的速度会受到很大的限制。 分布式在没有网络的情况下也可以执行commit、查看版本提交记录、以及分支操作,在有网络的情况下执行 push 到 Remote Repository。
文件存储格式 按照原始文件存储,体积较大 按照元数据方式存储,体积很小
是否有版本号 没有
分支操作的影响 创建新的分支则所有的人都会拥有和你一样的分支 分支操作不会影响其他开发人员
提交 提交的文件会直接记录到中央版本库 提交是本地操作,需要执行push操作才会到主要版本库

使用场景总结:

当研发成本比较低,协作开发人数不多,开发人员对于版本管理的水平参差不齐的时候,或者对于代码的安全性要求更高一点的时候,适合用svn。

而对于很多人参与开发,代码量比较大,或者高频次协作,跨公司,跨地域合作的情况下,更适合用git。

在这里插入图片描述

3.1 逻辑关系图

在这里插入图片描述

4.牛逼的人不需要解释这句话被LINUX展现的淋漓尽致

在这里插入图片描述

4.1 gitlab的由来

李纳斯 托瓦兹编写了linux内核,但是为了将其优化 仅靠一人之力难以完成,聪明的他想到了将内核代码开源,于是世界上千千万万的程序员都来进行内核优化,为其打上补丁。

可是从千万份代码中手动进行版本对比,并将优化后的功能写入内核十分困难且繁杂。这时一家公司主动联系他 可以让林纳斯免费使用版本控制系统,但是他的手下的员工对版本控制系统进行了破解。 东窗事发之后,大发雷霆的公司找到托瓦兹要求他进行道歉,但托瓦兹属于狠人一个,在他的字典中没有“道歉”俩字,立马回绝了公司的要求。

此时的托瓦兹拿起桌上的啤酒一饮而尽,虽然醉上心头,但神情坚定,他仰天大笑:“爷给你整一个!” 于是便有了后来全世界使用最多的git ,而git的本意也有饭桶的意思,也同时代表作者自嘲的意味。 (这种“没有枪没有炮敌人给我们造”的精神体现了革命乐观主义和独立自主、自力更生的精神)

03 .Git安装

1. 系统环境准备

root@git-git~]# cat /etc/redhat-release #查看系统版本
CentOS Linux release 7.1.1503 (Core)
[root@git-git ~]# uname -r #查看内核版本
3.10.0-229.el7.x86_64
[root@git-git ~]# getenforce #确认Selinux关闭状态
Disabled
[root@git-git ~]# systemctl stop firewalld #关闭防火墙

2. Git安装部署

[root@git-git ~]# yum install git 
# 安装Git
[root@git ~]# git config
--global              使用全局配置文件
--system              使用系统级配置文件
--local               使用版本库级配置文件
[root@git-git ~]# git config –-global user.name “gaoxu” 
# 配置git使用用户
[root@git-git ~]# git config –-global user.email “gaoxu@mail.com” 
# 配置git使用邮箱
[root@git-git ~]# git config –-global color.ui true
# 语法高亮
[root@git-git ~]# git config –-list
user.name=gaoxu
user.email=oldboy@mail.com
color.ui=true
[root@git ~]# cat .gitconfig 
[user]
    name = gaoxu
    email = gaoxu@qq.com
[color]
    ui = true

3.git初始化

 初始化工作目录、对已存在的目录或者对已存在的目录都可进行初始化
 # 第一步:选择一个合适的地方,创建一个空目录
 mkdir git_data
 cd git_data/
 # 初始化 使用这个命令把工作区初始化
 git init
 # 查看工作区状态
 git status
 隐藏文件介绍:
 branches # 分支目录
 config   # 定义项目特有的配置选项
 description  # 仅供git web程序使用
 HEAD # 指示当前的分支
 hooks # 包含git钩子文件
 info # 包含一个全局排除文件(exclude文件)
 objects # 存放所有数据内容,有info和pack两个子文件夹
 refs # 存放指向数据(分支)的提交对象的指针
 index # 保存暂存区信息,在执行git init的时候,这个文件还没有

04 .Git常规使用

1. 创建数据-提交数据

在这里插入图片描述

2. git四种状态

在这里插入图片描述

3. git基础命令

[root@git git_data]# git status
# 位于分支 master
# 初始提交
无文件要提交(创建/拷贝文件并使用 "git add" 建立跟踪)

创建文件进行测试

[root@git git_data]# touch a b c
[root@git git_data]# git status
# 位于分支 master
#
# 初始提交
#
# 未跟踪的文件:
#   (使用 "git add <file>..." 以包含要提交的内容)
#
#       a
#       b
#       c
提交为空,但是存在尚未跟踪的文件(使用 "git add" 建立跟踪)

提交分支查看状态

[root@git git_data]# git add a
[root@git git_data]# git status
# 位于分支 master
#
# 初始提交
#
# 要提交的变更:
#   (使用 "git rm --cached <file>..." 撤出暂存区)
#
#       新文件:    a
#
# 未跟踪的文件:
#   (使用 "git add <file>..." 以包含要提交的内容)
#
#       b
#       c 
[root@git git_data]# ll .git/
总用量 20
drwxr-xr-x 2 root root    6 823 05:44 branches
-rw-r--r-- 1 root root   92 823 05:44 config
-rw-r--r-- 1 root root   73 823 05:44 description
-rw-r--r-- 1 root root   23 823 05:44 HEAD
drwxr-xr-x 2 root root 4096 823 05:44 hooks
-rw-r--r-- 1 root root   96 823 07:06 index         # git add a 把文件提交到了暂存区
drwxr-xr-x 2 root root   20 823 05:44 info
drwxr-xr-x 5 root root   37 823 07:06 objects
drwxr-xr-x 4 root root   29 823 05:44 refs

git add . git status git rm --cached c (删除缓存区的c文件)

[root@git git_data]# git add .         # 使用git add . 或者* 添加目录中所有改动过的文件
[root@git git_data]# git status
# 位于分支 master
#
# 初始提交
#
# 要提交的变更:
#   (使用 "git rm --cached <file>..." 撤出暂存区)
#
#       新文件:    a
#       新文件:    b
#       新文件:    c

[root@git git_data]# git rm --cached c
rm 'c'
[root@git git_data]# ll
总用量 0
-rw-r--r-- 1 root root 0 823 07:05 a
-rw-r--r-- 1 root root 0 823 07:05 b
-rw-r--r-- 1 root root 0 823 07:05 c
[root@git git_data]# git status
# 位于分支 master
#
# 初始提交
#
# 要提交的变更:
#   (使用 "git rm --cached <file>..." 撤出暂存区)
#
#       新文件:    a
#       新文件:    b
#
# 未跟踪的文件:
#   (使用 "git add <file>..." 以包含要提交的内容)
#
#       c

删除文件

1.先从暂存区撤回到工作区、然后直接删除文件
git rm --cached c
rm -f c
2.直接从暂存区域同工作区域一同删除文件命令
git rm -f b

提交代码到仓库并查看状态

[root@git git_data]# git commit -m "commit a"    # 提交到本地仓库
[master(根提交) b4017a8] commit a
1 file changed, 0 insertions(+), 0 deletions(-)
create mode 100644 a
[root@git git_data]# git status
# 位于分支 master
无文件要提交,干净的工作区

修改文件名称

修改文件名称两种方法
1. [root@git git_data]# mv a a.txt
[root@git git_data]# git status
# 位于分支 master
# 尚未暂存以备提交的变更:
#   (使用 "git add/rm <file>..." 更新要提交的内容)
#   (使用 "git checkout -- <file>..." 丢弃工作区的改动)
#
#       删除:      a
#
# 未跟踪的文件:
#   (使用 "git add <file>..." 以包含要提交的内容)
#
#       a.txt
修改尚未加入提交(使用 "git add" 和/或 "git commit -a"[root@git git_data]# git rm --cached a         # 从暂存区删除a文件
rm 'a'
[root@git git_data]# git status
# 位于分支 master
# 要提交的变更:
#   (使用 "git reset HEAD <file>..." 撤出暂存区)
#
#       删除:      a
#
# 未跟踪的文件:
#   (使用 "git add <file>..." 以包含要提交的内容)
#
#       a.txt
[root@git git_data]# git add a.txt
[root@git git_data]# git status
# 位于分支 master
# 要提交的变更:
#   (使用 "git reset HEAD <file>..." 撤出暂存区)
#
#       重命名:    a -> a.txt          # 识别到a和a.txt相同为重命名
[root@git git_data]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值