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. springboot启动报:Error creating bean with name 'dataSource' defined in class path resource

    需要在启动类的@EnableAutoConfiguration或@SpringBootApplication中添加exclude = {DataSourceAutoConfiguration.clas ...

  2. POJ 4046 Sightseeing

    Sightseeing Time Limit: 5000ms Memory Limit: 65536KB This problem will be judged on PKU. Original ID ...

  3. rabbit-入门

    #启用rabbit的web管理 rabbitmq-plugins.bat enable rabbitmq_management 发布的窗口用TOPIC模式 rabbitmq没有确认消息接收的返回值,M ...

  4. Docker--在ubuntu中的操作

    docker的基础命令 安装前的检查 //查看内核版本 uname -a //检查Device Mapper ls -l /sys/class/misc/device-mapper 在ubuntu中安 ...

  5. ZooKeeper搭建系列集 (这套很全,也很详细)

    原文链接:http://blog.csdn.net/shatelang/article/details/7596007 本篇文章结构: 总共包括10个系列 ZooKeeper系列之一:ZooKeepe ...

  6. POJ 1985

    求一棵树内最远的两点,DFS,顺便记录以某节点为根内最远的两点的距离,返回最远点的距离.其实是DP. #include <cstdio> #include <iostream> ...

  7. 基础树形DP小结

    HDU 4044 Geodefense http://blog.csdn.net/zmx354/article/details/25109897 树形DP暂且先告一段落了. HDU 3586 Info ...

  8. 【翻译自mos文章】Oracle GoldenGate 怎么在源头的传输进程和目的端的server/collector进程之间分配 port?

    Oracle GoldenGate 怎么在源头的传输进程和目的端的server/collector进程之间分配 port? 来源于: How Does GoldenGate Allocates Por ...

  9. BZOJ 4517: [Sdoi2016]排列计数 错排+逆元

    4517: [Sdoi2016]排列计数 Description 求有多少种长度为 n 的序列 A,满足以下条件: 1 ~ n 这 n 个数在序列中各出现了一次 若第 i 个数 A[i] 的值为 i, ...

  10. modelstate.isvalid false

    http://stackoverflow.com/questions/1791570/modelstate-isvalid-false-why 第一个 About "can it be th ...