持续集成、持续交付(CI/CD)开篇,先来唠唠嗑

前言

现在稍微有点规模的系统,很多都是采用分布式/微服务架构,将一个大系统拆分为很多个功能模块进行开发、测试、发布、管理等,如果全部流程都采用人工的形式进行的话,效率肯定是超级不高效滴。而且现在很多项目都采用极限编程的模式,将原有比较复杂的过程分解为更小的周期进行管理,将开发的成果快速的体现给用户,如果单纯人工操作,就需要大量的人力成本才能达到要求(频繁的开发、测试、部署是很耗时的),另外很容出错。所以自动化的集成和交付是很有必要的,接下来就开始这系列的学习和分享,小伙伴们一起哦。

极限编程(ExtremeProgramming,简称XP)是一个轻量级的、灵巧的软件开发方法;同时它也是一个非常严谨和周密的方法;XP是一种近螺旋式的开发方法,它将复杂的开发过程分解为一个个相对比较简单的小周期;通过积极的交流、反馈以及其它一系列的方法,开发人员和客户可以非常清楚开发进度、变化、待解决的问题和潜在的困难等,并根据实际情况及时地调整开发过程。---摘自百度百科

正文

1. CI/CD简介

需求变更频繁、开发人员时间不够用、传统人工运维费事费力是项目遇到的三大难题,所以各种模式应运而生,比如常听见的DevOps、CI/CD、敏捷开发等,其实最终的目的就是通过自动化的工具协作和沟通来完成软件的生命周期管理,从而更快、更频繁地交付更稳定的软件产品,尽可能降低开发成本,满足客户需求。

有了自动化就不用加班了?想多了,只是减少不必要的时间浪费,节省出来时间还得去做其他的更有意义的事,所以该加的还加。

1.1 CI持续集成

CI(Continuous integration)持续集成:根据开发情况,随时将功能集成到整个项目中。

有点规模的系统都会分解为很多模块,每个模块又会分解为很多小功能,每个小功能还会分解成很多小操作,而这些功能模块可能都是不同的开发人员进行开发,持续集成的目的就是开发人员根据功能的完成情况,可以随时将对应的开发成果合并到整体项目中,尽早的与其他模块集成并进行测试,尽早发现问题并解决

1.2 CD持续交付

CD(Continuous delivery)持续交付根据功能集成情况,小周期内形成小版本交付,快速迭代,让用户尽快的体验到新功能

项目开发过程中,需求变更是避免不了的,通过短周期的小版本交付,实时获取用户反馈,有针对性的快速优化和完善,减少不必要的返工和大的需求变动,还可以降低累积功能交付的风险。另外一个角度来说,让用户快速使用到新功能,用户的体验感也不一样(用户就是上帝)。

2. CI/CD实操流程

实际工作中,其实通俗点说就是将原有的部分人为参与的步骤借助自动化工具进行管理,使得整个流程自动化、标准化,降低人为操作错误的风险。人为操作和自动化操作流程如下:

  • 人为操作

    65b5aba51c074c76c2e67226b129dc12.png

    上图简述:

    1.开发人员将功能代码推送的服务器;

    2.经过多轮测试,直到可发布;

    3.运维人员拉取可发布代码;

    4.然后进行打包;

    5.最后发布到应用服务器上;

    当然也有开发人员把活全干了的,但不管咋弄,假如发布的功能比较多或是发布比较频繁,那对应的人员工作就只能干发布这一件事了,而且人为操作出错的概率比较高。

  • 自动化操作

    1e142cbd82740e7147e53f644cdf80e2.png

    上图简述:

    1.开发人员将功能代码推送的服务器,推送正式代码前会先自动化测试和人工测试(图中没体现);

    2.版本控制服务器收到代码的同时,会触发对应的钩子程序(或定时程序)

    3.通知持续集成工具(Jenkins,Hudson等),工具会自动先使用安装的git/svn插件从版本控制服务器上拉取源代码

    4.工具会使用编译/打包插件将拉取下来的代码进行自动编译打包

    5.工具最后将打包的程序发布到应用服务器上;(这里根据打包的形式不一样,发布方式也不一样;比如直接运行,或者是镜像方式,又或者是集成K8S,后续我们会逐步实操);这步使用插件根据部署场景不一样,使用的也不一样。

    6.在自动化期间如果发生错误,可以配置通知,相关人员会及时进行处理,从而快速响应,快速迭代

    相比人工操作,开发人员只需提交代码,后续就基本自动化了,这样是不是很给力。至于要不要这样做,主要还是看业务和制度。

3. Jenkins 简介及安装

关于持续集成的工具有Jenkins,Hudson,gitLab-runner等,大家常用的就是Jenkins,接一下来就以它为工具的前提下进行实操演示。

3.1 Jenkins简介

Jenkins是一个开源的软件项目,是基于Java开发的一种持续集成工具,帮助开发人员自动构建项目;Jenkins通过插件化的方式可以集成不同开发语言、不同版本控制工具、不同流程部署等场景

3.2 Jenkins安装

这里还是采用Docker的方式进行安装,采用的是云服务器(Linux),具体步骤如下:

  • 执行Docker命令进行安装

    docker run -p 8080:8080 -p 5000:5000 --name jenkins \
    -u root \
    -v /mydata/jenkins_home:/var/jenkins_home \
    -d jenkins/jenkins:lts

    命令解析:

    -p 8080:8080 -p 5000:5000 指定主机和容器的映射端口;

    --name jenkins 指定容器名为jenkins;

    -u root 指定用户,这里root用户下;

    -v /mydata/jenkins_home:/var/jenkins_home 挂载目录;

    -d 是以后台形式启动容器;最后一串是代表使用的镜像。

    访问8080端口看效果,如下:

    7cc042a5de5139194bbd03cf917c61cb.png
  • 查找初始密码

    命令方式,如下:

    docker logs jenkins # 看容器的启动日志
    7d6b1438fddb6c308b5e2d4dff92dc48.png

    进入容器内部看初始密码文件的方式,如下:

    d8cd50a972f329a59b17a7e1476eee6d.png
  • 安装插件

    登录之后就提示进行插件安装,刚开始直接安装推荐插件即可;

    6591b2366b5d05118c32ffe4cb608002.png

    接下来就是等待插件安装完成即可,如果安装失败,就多试几次。

    a03e777f10ac75273540c763b413cad6.png
  • 新建用户

    推荐插件安装完毕之后,会出现新建用户的界面,根据自己需要创建属于自己的新账号,如下:

    6642bbf543b3581606f2f45391e4dac3.png
  • 配置地址,这个地址先按默认的来,后续用到了我们再来解释

    dcfe4531a3a3f8a564fbccf674b94549.png
  • 安装完成

    9310a5d72b2fba366c6dec2099022764.png

总结

其实对于项目周期的管理越是简单高效越好,不要盲目使用工具;就比如小小的单体程序,各种持续集成、部署工具都用上,那就是自己给自己添堵,一定要以解决问题为目的。

到这就先把Jenkins环境搭建好,后续的文章会陆续分享,从代码到最后容器化,咱们一步一步的来;之后的案例将会使用码云作为代码的版本控制服务器,相对github来说比较快,不过原理都差不多。关注“Code综艺圈”,和我一起学习吧;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/295616.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

100例经典炒菜_Python3经典100例(②)

实例6题目:斐波那契数列;分析:利用递归计算斐波那契数列,输入斐波那契数列的n位,调用递归计算出第n位的数列值;代码:#!/usr/bin/python3 # -*- coding: utf-8 -*- # Time : 2018-10-3 21:10 …

分享10个2012年最新发布的jQuery插件

为什么80%的码农都做不了架构师?>>> 日期:2012-5-9 来源:GBin1.com 本文收集了最新的jQuery社区发布的jQuery插件,绝对是你没有见过的,希望大家喜欢! 1. SearchMeme 一个即时搜索的jQuery插件…

博士毕业的人也会交“智商税”?现实远比我们想象的残酷……

全世界只有3.14 % 的人关注了爆炸吧知识2018 年的那个多事之秋,我终于在人生快要过半的时候拿到了博士学位。大毛和小鱼是我博士期间玩得最好的兄弟,我们三人水平差不多,志向差不多,博士毕业后都进了双非高校。现实不像是想象中那…

聊一聊声明式接口调用与Nacos的结合使用

背景 对于公司内部的 API 接口,在引入注册中心之后,免不了会用上服务发现这个东西。现在比较流行的接口调用方式应该是基于声明式接口的调用,它使得开发变得更加简化和快捷。.NET 在声明式接口调用这一块,有 WebApiClient 和 Refi…

三次握手和四次挥手图解_三次握手和四次挥手简单理解

TCP三次握手TCP标志位TCP在其协议头中使用大量的标志位或者说1位(bit)布尔域来控制连接状态,一个包中有可以设置多个标志位。TCP是主机对主机层的传输控制协议,提供可靠的连接服务,采用三次握手确认建立一个连接&#…

Android之基于BaseAdapter和SimpleAdapter的GridView

GridView 第一种方式:用SimpleAdapter 先来贴出本文代码运行的结果: 本文需要添加/修改3个文件:main.xml、night_item.xml、JAVA源代码。 main.xml源代码如下,本身是个GirdView,用于装载Item: <?xml version="1.0" encoding="utf-8"?> <…

IOS开发CAKeyframeAnimation的基本使用与keypath的列举

2019独角兽企业重金招聘Python工程师标准>>> CAKeyframeAnimation跟CABasicAnimation的区别是&#xff1a;CABasicAnimation只能从一个数值(fromValue)变到另一个数值(toValue)&#xff0c;而CAKeyframeAnimation会使用一个NSArray保存这些数值 - (void)value {CAKe…

少女为什么会身上香香的?

1 一旦接受这个设定苏打窃瓦辛格&#xff08;via.煎甜担担面&#xff09;▼2 有被冒犯到▼3 哈哈哈哈哈▼4 就差了难忘今宵▼5 还是挺在理的▼6 欣慰中带着点点悲伤▼7 原来是你的错▼8 哈哈哈哈哈▼你点的每个赞&#xff0c;我都认真当成了喜欢

Android之Android Studio三种方式导入外部资源 以及 报错处理

Android Studio三种方式导入外部资源 以及 报错处理 android studio提供了三种方式导入外部资源: 1. Library dependency – 在线添加、需联网下载 、 2. File dependency – 从本地添加一些jar包(要先将jar包</

android飞翔的小鸟游戏素材包_开心消消乐×愤怒的小鸟:为开心而战

手机里总有那么一些游戏&#xff0c;是你一旦不小心打开&#xff0c;就完全停不下来的。在这份“一直玩一直爽游戏清单”里&#xff0c;绝对少不了开心消消乐和愤怒的小鸟的身影。神奇的是&#xff0c;在2020的夏天&#xff0c;它们合体了&#xff01;在接到开心消消乐的brief时…

RabbitMQ 处理过慢,原来是一个 SQL 缓存框架导致的 GC 频繁触发

一&#xff1a;背景 1. 讲故事上个月底&#xff0c;有位朋友微信找到我&#xff0c;说他的程序 多线程处理 RabbitMQ 时过慢&#xff0c;帮忙分析下什么原因&#xff0c;截图如下&#xff1a;这问题抛出来&#xff0c;有点懵逼&#xff0c;没说CPU爆高&#xff0c;也没说内存泄…

3部世界顶级宇宙纪录片,献给对宇宙万物充满好奇的你~

全世界只有3.14 % 的人关注了爆炸吧知识宇宙深邃美丽&#xff0c;是黑夜的荧光&#xff0c;是夏天里冒着凉气的西瓜&#xff0c;总是诱人地勾起一代又一代人探索的欲望。对于宇宙思索与探索&#xff0c;人类的脚步从未停止。正是人类对宇宙的好奇&#xff0c;撑起了人类发展的大…

二元函数偏导数公式_偏导数计算公式大全

如果函数f(x)在(a,b)中每一点处都可导,则称f(x)在(a,b)上可导,则可建立f(x)的导函数,简称导数。以下是小学生作文网小编给大家提供的导数公式大全,快来看看吧!导数的定义:当自变量的增量... 2018-12-29 阅读全文 >> 导数公式大全-偏导数基本公式大全_营销/活动策划_计…

OC类

2019独角兽企业重金招聘Python工程师标准>>> OC语言的一个类分为两个文件一个.h&#xff0c;一个.m&#xff0c;.h为头文件用来添加实例变量和方法声明。.m文件里面写入方法的实现 .h一般如下 interface 类名:父类 属性声明 方法声明 end .m一般如下 implementation…

06Prism WPF 入门实战 - Log控件库

1.概要源码及PPT地址&#xff1a;https://github.com/JusterZhu/wemail视频地址&#xff1a;https://www.bilibili.com/video/BV1KQ4y1C7tg?share\sourcecopy\web本章分为以下几个部分来了解&#xff1a;Part1 日志Part1.1 全局异常捕捉Part1.2 DumpPart2 引入控件库2.详细内容…

天冷打字全靠抖?!桌面暖手宝,体验10s速热,温暖升级,冬天有TA就够了

▲点击查看没有一丝丝防备&#xff0c;冷空气说来就来了~无论是寒风猛烈的北方&#xff0c;还是湿冷又没有暖气的南方&#xff0c;对于上班族来说&#xff0c;冬天最痛苦的事情莫过于哆哆嗦嗦在工位码字了&#xff01;冷风侵袭无处不在&#xff0c;备上个暖手袋&#xff0c;根本…

设计模式-Factory Method Pattern

为什么80%的码农都做不了架构师&#xff1f;>>> 一、 工厂方法&#xff08;Factory Method&#xff09;模式 工厂方法&#xff08;FactoryMethod&#xff09;模式是类的创建模式&#xff0c;其用意是定义一个创建产品对象的工厂接口&#xff0c;将实际创建工作推迟…

IoTSharp 2.0 发布

你站在桥上看风景&#xff0c;看风景人在楼上看你。明月装饰了你的窗子&#xff0c;你装饰了别人的梦。喜欢这首诗是因为觉得开源造福了我&#xff0c;我也在尝试贡献自己的力量&#xff0c; 成就他人的同时&#xff0c; 也成就了自己&#xff0c; 贡献开源事业的同时&#xff…

oracle监听

原理 客户端向服务器端发送连接请求&#xff0c;监听器监听到客户端德连接请求监听器监听到客户端德连接请求后&#xff0c;把客户端德连接请求交给数据库服务器处理客户端和服务器端建立连接&#xff0c;连接建立后&#xff0c;服务器端和客户端直接通信&#xff0c;而不再需要…

车窗上为啥总有一些小黑点?没想到居然藏着大作用!

全世界只有3.14 % 的人关注了爆炸吧知识经常坐车的人可能会发现一个小细节车窗边缘有一圈小黑点好多人都以为这个厂家的贴纸反正也不碍事就没去除它其实&#xff0c;这些小黑点确实有真正的科学用途其实并不是所有的车窗都有小黑点也可能是别的形状但是它们都有一个特点——都是…