Evernote Export

持续集成
持续集成,简单的说就是持续集成频繁的将代码集成到主干,它的好处主要有1.快速发现错误,没完成一点更新,就集成到主干,可以快速发现错误,定位错误也会比较容易,2.防止分支大幅偏离主干,如果不是经常持续集成的目的,就是让产品可以快速迭代,同事还能保持高质量。
持续交付
持续交付指的是,频繁的将软件的版本更新,交付给质量团队,以供评审,如果评审通过,代码将进入生产环节。
持续交付可以看做持续集成的下一步,不管如何更新,都满足持续交付。
持续集成的一般流程
根据持续集成的设计,代码从提交到生产,整个过程有以下几步:
1.提交
流程的第一步,是开发者向代码仓库提交代码,所有后面的步骤都始于本地代码的一次提交
2.测试(第一轮)
代码仓库对commit操作配置了钩子(hook),只要提交代码胡总合并进主干,就会跑自动测试
3.构建
通过第一轮测试,代码就会合并进主干,就算可以交付
交付后,就先进行构建,再进入第二轮测试,所谓构建,指的是将源码转换为可以运行的实际代码,比如安装依赖,配置各种资源(样式表、JS脚本、图片)等
常见的构建工具jeknins、Travis、codeship
4.测试(第二轮)
构建完成,就要进行第二轮测试,如果第一轮已经涵盖了所有测试内容,第二轮可以省略,当然,这时构建步骤也要一道第一轮测试前面
第二轮是全面测试,单元测试和集成测试都会跑,有条件的话,也要做端对端测试,所有测试以自动化为主,少数无法自动化的测试用例就需要人工跑。
5.部署
通过了第二轮测试,当前代码是一个可以直接部署的版本(artifact)
将这个版本的所有文件打包存档,发到生产服务器
生产服务器将打包文件,解包成本地的一个目录,再将运行路径的符号指向这个目录,然后重新启动,这方面的部署工具有ansible、Chef、Puppet等
6.回滚
 
 
 
认识DevOps
DevOps一词来自于Development和Operations的组合,突出重视软件开发人员和运维人员的沟通合作,通过自动化流程来是的软件构建、测试、发布更加快捷、频繁和可靠。
目前对DevOps有太多的说法和定义,不过它们都有一个共同的思想,"解决开发者和运维者之间曾经不可逾越的鸿沟,增强开发者与运维者之间的沟通和交流"
DevOps是一个框架,是一种方法论,并不是一套工具,他包括一系列的基本原则和实践
核心价值:
更快速地交付,影响市场的变化
更多地关注业务的改进与提升
 
为什么需要DevOps?
1.产品迭代
在现实工作中,往往都是用户不知道自己想要什么,但是当我们设计完一个产品后,他告诉我们不需要什么,这个就需要产品的迭代,而且过程是曲折的,那我们有什么好的办法快速交付价值,灵活的响应变化呢?
答案就是DevOps
因为DevOps是面向业务目标,助力业务成功的最佳实践
2.技术革新
现在的IT技术架构随着系统的复杂化不断的革新,从最初的所有服务在一个系统中,发展到现在的微服务架构,从纯手动操作到全自动流程,从单台物理机到云平台。
落实DevOps指导思想
高效的协作和沟通
自动化流程和工具
迅速敏捷的开发
持续交付和部署
不断学习和创新
敏捷管理:一支训练有素的敏捷开发团队是成功实施DevOps的关键
持续交付部署,实现应用程序的自动化构建,部署、测试和发布。
通过技术工具,把传统的手工操作转变为自动化流程,这不仅有利于提高产品开发、运维部署的效率,还将减少人为因素引起的失误和事故,提早发现问题并及时解决问题
 
版本控制系统
常见的版本控制管理工具
SVN
集中式的版本控制系统,只有一个中央数据仓库,如果中央数据仓库挂了或者不可访问,所有的使用者无法使用SVN,无法进行提交或备份文件。
Git
用分布式的版本控制系统,在每个使用者电脑上就有一个完整的数据仓库,没有网络依然可以使用Git,当然为了习惯及团队协作,会将本地数据同步到Git服务器或者GitHub等代码仓库
Git
Git是一个分布式的版本控制系统,用于敏捷高效的处理和开发任何或大或小的项目
Git是Linux的作者为了帮助管理内核开发而开发的一个开放式源码的版本控制软件
Git与常用的版本控制工具CVS,等不同,它采用了分布式版本库的方式,不必与服务器端软件支持
Git与SVN的区别
1.Git是分布式的,SVN不是,这是Git和其他分布式版本控制系统,例如svn最核心的区别
2.Git把内容按元数据的方式存储,而SVN是按照文件,所有的资源控制系统都是把文件的元信息隐藏在一个类似svn,cvs的文件夹里
3.Git分支和SVN的分支不同,分支在SVN中是版本库的另外一个目录
4.Git没有一个全局的版本号,而svn有,目前为止这是svn相比git缺少的最大的一个特征
5.Git的内容完整性要优于SVN,Git的内容存储使用的是SHA-1哈希算法,这能确保代码内容的完整性,确保在遇到磁盘故障时降低对版本库的破坏。
 
 

路飞学城Python-Day186的更多相关文章

  1. 路飞学城—Python爬虫实战密训班 第三章

    路飞学城—Python爬虫实战密训班 第三章 一.scrapy-redis插件实现简单分布式爬虫 scrapy-redis插件用于将scrapy和redis结合实现简单分布式爬虫: - 定义调度器 - ...

  2. 路飞学城—Python爬虫实战密训班 第二章

    路飞学城—Python爬虫实战密训班 第二章 一.Selenium基础 Selenium是一个第三方模块,可以完全模拟用户在浏览器上操作(相当于在浏览器上点点点). 1.安装 - pip instal ...

  3. 路飞学城Python爬虫课第一章笔记

    前言 原创文章,转载引用务必注明链接.水平有限,如有疏漏,欢迎指正. 之前看阮一峰的博客文章,介绍到路飞学城爬虫课程限免,看了眼内容还不错,就兴冲冲报了名,99块钱满足以下条件会返还并送书送视频. 缴 ...

  4. 路飞学城-Python开发集训-第3章

    学习心得: 通过这一章的作业,使我对正则表达式的使用直接提升了一个level,虽然作业完成的不怎么样,重复代码有点多,但是收获还是非常大的,有点找到写代码的感觉了,遗憾的是,这次作业交过,这次集训就结 ...

  5. 路飞学城-Python开发集训-第1章

    学习体会: 在参加这次集训之前我自己学过一段时间的Python,看过老男孩的免费视频,自我感觉还行,老师写的代码基本上都能看懂,但是实际呢?....今天是集训第一次交作业的时间,突然发现看似简单升级需 ...

  6. 路飞学城-Python开发集训-第4章

    学习心得: 学习笔记: 在python中一个py文件就是一个模块 模块好处: 1.提高可维护性 2.可重用 3.避免函数名和变量名冲突 模块分为三种: 1.内置标准模块(标准库),查看所有自带和第三方 ...

  7. 路飞学城-Python开发集训-第2章

    学习心得: 这章对编码的讲解超级赞,现在对于编码终于有一点认知了,但还没有大彻大悟,还需要更加细心的琢磨一下Alex博客和视频,以前真的是被编码折磨死了,因为编码的问题而浪费的时间很多很多,现在终于感 ...

  8. 路飞学城-Python开发-第二章

    ''' 数据结构: menu = { '北京':{ '海淀':{ '五道口':{ 'soho':{}, '网易':{}, 'google':{} }, '中关村':{ '爱奇艺':{}, '汽车之家' ...

  9. 路飞学城-Python开发-第三章

    # 数据结构: # goods = [ # {"name": "电脑", "price": 1999}, # {"name&quo ...

  10. 路飞学城-Python开发-第一章

    # 基础需求: # 让用户输入用户名密码 # 认证成功后显示欢迎信息 # 输错三次后退出程序 username = 'pandaboy' password = ' def Login(username ...

随机推荐

  1. netsh wlan set hostednetwork 之后如何删除掉 配置 及终端无法获取IP的解决方法

    来源 微软 技术支持网站 仅仅禁用hostednetwork 是不行的,配置其实还在,彻底删除 配置可以按照如下操作进行: net stop wlansvcGet-ItemProperty " ...

  2. Merging into a Table: Example

    Merging into a Table: Example The following example uses the bonuses table in the sample schema oe w ...

  3. myquant平台搭建及使用

    1.主页 http://myquant.cn/ 点击“我要申请试用”,进入如下页面:http://myquant.cn/news/2015/03/25/try-gmsdk-v2.0/ 点击“试用注册” ...

  4. 如何实现网卡bond

    https://jingyan.baidu.com/article/375c8e19da666325f2a229f7.html

  5. Linux查找字符串命令grep(转)

    Linux grep命令用于查找文件里符合条件的字符串. grep指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设grep指令会把含有范本样式的那一列显示出来. ...

  6. HDU 4512 最长公共上升子序列

    各种序列复习: (1)最长上升子序列. 1.这个问题用动态规划就很好解决了,设dp[i]是以第i个数字结尾的上升子序列的最长长度.那么方程可以是dp[i]=max(dp[j]+1).(j<i). ...

  7. CSS3 timing-function: steps()介绍

    在应用 CSS3 渐变/动画时.有个控制时间的属性 <timing-function>.它的取值中除了经常使用到的三次贝塞尔曲线以外,还有个steps() 函数. steps 函数指定了一 ...

  8. jmeter函数和变量

    函数和变量广泛的应用在JMeter的传参过程,其中函数可以被认为是某种特殊的变量,它们可以被采样器或者其他测试元件所引用. 常用函数 1.__RamdomString() / __Ramdom() 获 ...

  9. NPOI文件导入操作

    using EntMSM.SmsDbContext; using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using NPOI.XSSF.UserM ...

  10. @RequiresPermissions 注解说明

    @RequiresAuthentication验证用户是否登录,等同于方法subject.isAuthenticated() 结果为true时.@RequiresUser验证用户是否被记忆,user有 ...