网站开发维护协议,郑州搭建网站,建设个人网站用什么软件,微网站开发 php在本系列教程中#xff0c;笔者希望将必要的知识点围绕理论、流程#xff08;工作流程#xff09;、方法、实践来进行讲解#xff0c;而不是单纯的为讲解知识点而进行讲解。也就是说#xff0c;笔者希望能够让大家将理论、知识、思想和指导应用到工作的实际场景和实践之中… 在本系列教程中笔者希望将必要的知识点围绕理论、流程工作流程、方法、实践来进行讲解而不是单纯的为讲解知识点而进行讲解。也就是说笔者希望能够让大家将理论、知识、思想和指导应用到工作的实际场景和实践之中而不是拿着字典写文章抱着宝典写代码。至于很多具体的语法、技术细节除了常用的知识点笔者更希望大家阅读官方文档——毕竟看官网比看书靠谱多了官网会一直更新和改进而书和教程自出版或发布之后基本上就“死“了。本系列教程预计全部完成还需要2到3个月的时间。在这个过程中您可以加入我们的QQ群85318032一起讨论、交流和分享这一块的技术。我们也希望得到大家的支持请多多点赞或者请我们喝杯咖啡你们的支持是我们前进的最大动力◆◆Docker和持续集成CI◆◆什么是持续集成我们先得了解持续集成的相关概念才能更好地指导开发和使用Docker来改进我们的工作流。和其他教程不一样笔者更喜欢将必要的知识点围绕理论、流程工作流程、方法、实践来进行讲解而不是单纯的为讲解知识点而进行讲解。也就是说笔者希望为大家打通任督二脉能够将理论、知识、思想和指导应用到工作的实际场景和实践之中而不是拿着字典写文章抱着宝典写代码。至于很多具体的语法、技术细节除了常用的知识点笔者更希望大家阅读官方文档——毕竟看官网比看书靠谱多了官网会一直更新和改进而书和教程自出版或发布之后基本上就“死“了。好了我们回到正题。持续集成是一种软件开发实践即团队开发成员经常集成他们的工作通常每个成员每天至少集成一次也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建包括编译发布自动化测试来验证从而尽早地发现集成错误。徒弟一脸崇拜道“师父为什么我做出来的飞剑一念咒语不是碎了就是爆了呢”。师父摸了摸胡子道“徒儿莫急冰冻三尺非一日之寒为师我刻了3年的阵法练习了3年的咒语然后又花了3年一起练习才让第一把飞剑飞上了太空。我看你天资聪慧顶多20年就够了”。2年后徒弟边刻阵法边念咒突然飞剑的剑身嗖的一下不见了只余剑柄。师父“徒儿你的飞剑怎么飞了一截出去了”徒弟握着剑柄行礼道“师父勿怪这段时间我对飞剑的制作过程进行了改良一边刻阵法一边念咒现在我对阵法和咒语的掌控都达到了70%所以只有前半截飞出去了“注意集成软件的过程不是新问题如果项目开发的规模比较小比如一个人的项目如果它对外部系统的依赖很小那么软件集成不是问题但是随着软件项目复杂度的增加即使增加一个人就会对集成和确保软件组件能够在一起工作提出了更多的要求-要早集成常集成。早集成频繁的集成帮助项目在早期发现项目风险和质量问题如果到后期才发现这些问题解决问题代价很大很有可能导致项目延期或者项目失败。核心价值要素1.统一的代码库2.自动构建3.自动测试4.每个人每天都要向代码库主干提交代码5.每次代码递交后都会在持续集成服务器上触发一次构建6.保证快速构建7.模拟生产环境的自动测试8.每个人都可以很容易的获取最新可执行的应用程序9.每个人都清楚正在发生的状况10.自动化的部署原则1. 所有的开发人员需要在本地机器上做本地构建然后再提交的版本控制库中从而确保他们的变更不会导致持续集成失败。2. 开发人员每天至少向版本控制库中提交一次代码。3. 开发人员每天至少需要从版本控制库中更新一次代码到本地机器。4. 需要有专门的集成服务器来执行集成构建,每天要执行多次构建。5. 每次构建都要100%通过。6. 每次构建都可以生成可发布的产品。7. 修复失败的构建是优先级最高的事情。8. 测试是未来未来是测试持续集成我们就先说到这里建议大家也可以了解下敏捷开发毕竟持续集成是敏捷开发的基石但是敏捷开发是一个大命题这里我们顺带提一下然后我们还是先继续本篇教程师父“徒儿你真的在短短3年就让飞剑飞起来了”。徒弟“弟子愚钝在刻剑的过程中倍觉无聊又不喜欢哼歌于是索性边练咒边刻剑。后面徒儿发现如果刻错了或者念错了飞剑就会提前直接爆炸虽然每次炸的内裤都没了但是能够尽早发现错误。所以徒弟才能一日千里”。师父摸了摸胡须道“然来如此不过这就是你大庭广众之下裸奔的借口”◆◆Docker和持续集成CI◆◆相比其他技术Docker在持续集成CI这块有着先天的优势。在通常的情况下我们要实现持续集成往往会遇到以下问题l 复杂的依赖关系不同的项目环境不同的语言不同的程序包依赖甚至是操作系统的依赖等等都会影响到我们持续集成的自动化脚本的执行。而且依赖包之间的兼容性版本的兼容性间接依赖或者多重依赖等问题等等对于开发和运维来说都是一个噩梦。就如以下对话徒弟“师父我按照您教的方式念咒为什么飞剑飞起来了之后就收不回来了”。师父直接一巴掌说“兔崽子上次就和你说了咒语现在最低的兼容级别是——普通话二级乙等谁教你说长沙话的”l 不一致的环境在通常的环境中我们需要准备好开发、测试和生产环境往往开发环境随便开发人员折腾有时候操作系统或者依赖软件的版本的区别、组件的不同、配置不一样都足够让开发环境正常运行的程序在测试环境上跑不起来造成测试人员和开发人员的故意伤害事件导致“行凶人员”后悔终生感悟到“冲动就是魔鬼”的箴言。我们还是以对话来阐述这个问题徒弟拿出普通话二级乙等证书道“师父我苦学普通话终于达到普通话二级乙等。然后按照您教的方式念咒了之后为什么飞剑飞起来了之后还是没法收回来”。师父又是一巴掌说“兔崽子你没看到下雨了么”徒弟弱弱的问“这个和下雨有关系么是不是雨天法术受雨滴干扰咒语的效果受到影响呢”师父指着外面道“瞎了你丫的不赶紧把被子收回来烘干你的飞剑就甭想要了”l 应用架构的复杂性和配置的多样性现在的系统架构越来越复杂甚至由多种开发语言组成而且包含前后端等多方面内容。这些可能会导致其部署方式的不同以及配置的复杂性。并且一个系统维护到后面往往有很多历史遗留问题比如那各种配置文件和配置方式各种补丁各种脚本等等。这些因素会导致自动化流程会非常麻烦和艰难。我们继续来一段对话徒弟“师父被子收好了但是飞剑越飞越远了是不是可以教我收回我的飞剑啦”。师父张开一只眼“小崽子普通话念完后用长沙话再念一遍收剑咒前几天为师对收剑咒又进行了改造。”徒弟用长沙话念完飞剑还是再天空中乱窜并没有降下来的意思。徒弟赶紧问道“师父为啥还是不行呢”师父弹了弹手指远处一根若隐若现的细线展现出来师父指着那根线说“看到那边那根线没还不赶紧去追”相比这些问题Docker实现持续集成CI就方便多了。首先Docker可以让我们非常容易和方便地以“容器化”的方式去部署应用。它就像集装箱一样打包了所有依赖再在其他服务器上部署很容易不至于换服务器后发现各种配置文件散落一地这样就解决了编译时依赖和运行时依赖的问题。其次Docker的隔离性使得应用在运行时就像处于沙箱中每个应用都认为自己是在系统中唯一运行的程序这样就可以很方便地在一个系统中部署多种不同环境来解决依赖复杂度的问题。正因为Docker是以应用为中心镜像中打包了应用及应用所需的环境一次构建处处运行。这种特性完美解决了传统模式下应用迁移后面临的环境不一致问题。因此使用Docker实现持续集成我们可以使用一些简单的免费的工具即可实现也可以非常方便的自己搭建集成环境或者编写脚本实现。比如Azure DevOps、Tencent Hub、Jenkins和TeamCity接下来我们会逐步进行介绍。持续集成工作流程一般情况下持续集成的流程如下所示下面是一个参考流程代码版本管理我们推荐使用Git。关于git版本库的使用我这里就不啰嗦了如果有朋友感兴趣我也可以分享一些内容。后续我们将会分享使用相关工具来实施我们的CI流程。相关文章Docker最全教程——从理论到实战一Docker最全教程——从理论到实战二Docker最全教程——从理论到实战三Docker最全教程——从理论到实战四Docker最全教程——从理论到实战五Docker最全教程——从理论到实战六Docker最全教程——从理论到实战七转载是一种动力 分享是一种美德如果喜欢作者的文章请关注“magiccodes”订阅号以便第一时间获得最新内容。本文版权归作者和湖南心莱信息科技有限公司共有欢迎转载但未经作者同意必须保留此段声明且在文章页面明显位置给出原文连接否则保留追究法律责任的权利。QQ群编程交流群85318032 产品交流群897857351