专栏首页雪雁的专栏Docker最全教程——从理论到实战(八)
原创

Docker最全教程——从理论到实战(八)

前期内容链接:

Docker最全教程——从理论到实战(一)

Docker最全教程——从理论到实战(二)

Docker最全教程——从理论到实战(三)

Docker最全教程——从理论到实战(四)

Docker最全教程——从理论到实战(五)

Docker最全教程——从理论到实战(六)

Docker最全教程——从理论到实战(七)

在本系列教程中,笔者希望将必要的知识点围绕理论、流程(工作流程)、方法、实践来进行讲解,而不是单纯的为讲解知识点而进行讲解。也就是说,笔者希望能够让大家将理论、知识、思想和指导应用到工作的实际场景和实践之中,而不是拿着字典写文章,抱着宝典写代码。至于很多具体的语法、技术细节,除了常用的知识点,笔者更希望大家阅读官方文档——毕竟看官网比看书靠谱多了,官网会一直更新和改进,而书和教程自出版或发布之后,基本上就“死“了。

本系列教程预计全部完成还需要2到3个月的时间。在这个过程中,您可以加入我们一起讨论、交流和分享这一块的技术。我们也希望得到大家的支持,请多多点赞,你们的支持是我们前进的最大动力!

使用Azure DevOps来完成CI

Azure DevOps,以前叫VSTS,现在被微软改名部正式更名为Azure DevOps,说明微软云为先之心仍然蠢蠢欲动。不过和VSTS一样,微软都提供了免费的使用额度,对于小团队和个人开发者来说,完全是足够了。

什么是DevOps?

DevOps(Development和Operations的组合词)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。它是一种重视“软件开发人员(Dev)”和“IT运维技术人员(Ops)”之间沟通合作的文化、运动或惯例。透过自动化“软件交付”和“架构变更”的流程,来使得构建、测试、发布软件能够更加地快捷、频繁和可靠。它的出现是由于软件行业日益清晰地认识到:为了按时交付软件产品和服务,开发和运营工作必须紧密合作。

DevOps的引入能对产品交付、测试、功能开发和维护(包括──曾经罕见但如今已屡见不鲜的──“热补丁”)起到意义深远的影响。在缺乏DevOps能力的组织中,开发与运营之间存在着信息“鸿沟”──例如运营人员要求更好的可靠性和安全性,开发人员则希望基础设施响应更快,而业务用户的需求则是更快地将更多的特性发布给最终用户使用。这种信息鸿沟就是最常出问题的地方。

DevOps经常被描述为“开发团队与运营团队之间更具协作性、更高效的关系”。由于团队间协作关系的改善,整个组织的效率因此得到提升,伴随频繁变化而来的生产环境的风险也能得到降低。

总之,通过DevOps,各专业团队之间的协调和协作得到改善,缩短了将更改提交到系统与将更改投入到生产之间的时间。它还可确保此过程符合安全性和可靠性标准。结果:产品质量改善、交付速度加快、客户满意度提升。

DevOps对应用程序发布的影响

在很多企业中,应用程序发布是一项涉及多个团队、压力很大、风险很高的活动。然而在具备DevOps能力的组织中,应用程序发布的风险很低,原因如下:

  1. 减少变更范围

与传统的瀑布式开发模型相比,采用敏捷或迭代式开发意味着更频繁的发布、每次发布包含的变化更少。由于部署经常进行,因此每次部署不会对生产系统造成巨大影响,应用程序会以平滑的速率逐渐生长。

  1. 加强发布协调

靠强有力的发布协调人来弥合开发与运营之间的技能鸿沟和沟通鸿沟;采用电子数据表、电话会议、即时消息、企业门户(wiki、sharepoint)等协作工具来确保所有相关人员理解变更的内容并全力合作。

  1. 自动化

强大的部署自动化手段确保部署任务的可重复性、减少部署出错的可能性。

与传统开发方法那种大规模的、不频繁的发布(通常以“季度”或“年”为单位)相比,敏捷方法大大提升了发布频率(通常以“天”或“周”为单位)。减少变更范围与传统的瀑布式开发模型相比,采用敏捷或迭代式开发意味着更频繁的发布、每次发布包含的变化更少。由于部署经常进行,因此每次部署不会对生产系统造成巨大影响,应用程序会以平滑的速率逐渐生长。加强发布协调靠强有力的发布协调人来弥合开发与运营之间的技能鸿沟和沟通鸿沟;采用电子数据表、电话会议、即时消息、企业门户(wiki、sharepoint)等协作工具来确保所有相关人员理解变更的内容并全力合作。强大的自动化部署手段能够确保部署任务的可重复性、减少部署出错的可能性。

适用于容器的 CI/CD 流程

使用容器,可轻松地持续生成和部署应用程序。

Azure DevOps 可以通过设置持续版本以生成容器映像和业务流程,让我们能更快、更可靠地进行部署。以下是一个适用于容器和Azure的CI/CD 流程:

步骤说明:

使用Azure DevOps来配置一个简单的CI流程

Azure DevOps服务涵盖了整个开发生命周期,可帮助开发人员更快地高质量地交付软件,其提供了Azure Pipelines、Azure Boards、Azure Artifacts、Azure Repos和Azure Test Plans。关于Azure DevOps我们就介绍到这里,毕竟是免费介绍。

现在,我们需要侧重介绍的是Pipelines,也就是代码流水线。看,多形象,所以以前自诩为码农是错误的,我们应该是码工,广大流水线工人的一环,无产阶级之一,共产主义接班人。不好意思,又偏题了,我们继续:

首先,我们需要定义一个流水线,为了便于演示,我这里就定义一些针对Docker的简单步骤,大家可以按需添加步骤,比如单元测试步骤等等。

如图所示,步骤很简单,首先设置代码源,这里我们直接对接Magicodes.Admin框架的git库地址。Git库地址大家可以在这里找到:https://gitee.com/xl_wenqiang/Magicodes.Admin.Core

因为代码是托管再码云,所以我们选择如上图所示的最后一种方式,并且选择对应的分支。

接下来,我们需要添加job和task。job添加一个默认的即可,无需设置什么条件和参数。接下来我们添加task,实际上就是步骤。

第一步,构建镜像。

我们需要添加一个docker task:

然后设置command命令为build,也就是构建:

构建配置我们可以根据自己的需求来设置,比如根据分支设置镜像版本等等。

第二步,登录腾讯云镜像仓库并且推送。

这一步,就有点门槛了,原生的docker命令并不好使,因为task之间的上下文是断开的,也就是login了你也没法push。这时候,还是命令行靠谱,简单粗暴。所以我们需要添加一个Command line task:

然后编写命令脚本:

简单粗暴的两个步骤就搞定了,大家可以根据自己的持续集成流程来定制,毕竟微软在开发者服务这块淫荡多年,还是相当给力的。我们可以初步看看支持的task:

非常之多,足够我们随便玩了。而且玩坏了还不用赔钱。

接下来,跑起来:

点开还能看到详细的过程:

 激不激动,简单不简单?就这么几下就搞定了。产品很强大,就是拉取代码有点慢,看起来是托管在国外。顺手一查,额,美国:

因此,我们不是很推荐使用Azure DevOps来完成CI,网络的延迟足够拖垮我们焦虑的神经。但是如果我们的代码托管在Github,那么使用Azure DevOps是不错的选择。在接下来的教程中,我们会讲解如何打造自己的Github开源库的CI流程——不仅完全自动化,而且还支持在readme页面添加各种动态图标。

扫码关注公众号了解更多内容

扫码关注公众号了解更多内容

如果喜欢作者的文章,请关注“magiccodes”订阅号以便第一时间获得最新内容。本文版权归作者和湖南心莱信息科技有限公司共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

QQ群:

编程交流群<85318032> 

产品交流群<897857351>

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

推荐阅读

  • 远程办公经验为0,如何将日常工作平滑过度到线上?

    我是一名创业者,我的公司(深圳市友浩达科技有限公司)在2018年8月8日开始运营,现在还属于微型公司。这个春节假期,我一直十分关注疫情动向,也非常关心其对公司带来的影响。

    TVP官方团队
    TAPD 敏捷项目管理腾讯乐享企业邮箱企业编程算法
  • 数据中台,概念炒作还是另有奇效? | TVP思享

    作者简介:史凯,花名凯哥,腾讯云最具价值专家TVP,ThoughtWorks数据智能业务总经理。投身于企业数字化转型工作近20年。2000年初,在IBM 研发企业级中间件,接着加入埃森哲,为大型企业提供信息化架构规划,设计,ERP,云平台,数据仓库构建等技术咨询实施服务,随后在EMC负责企业应用转型业务,为企业提供云迁移,应用现代化服务。现在专注于企业智能化转型领域,是数据驱动的数字化转型的行业布道者,数据中台的推广者,精益数据创新体系的创始人,2019年荣获全球Data IQ 100人的数据赋能者称号,创业邦卓越生态聚合赋能官TOP 5。2019年度数字化转型专家奖。打造了行业第一个数据创新的数字化转型卡牌和工作坊。创建了精益数据创新方法论体系构建数据驱动的智能企业,并在多个企业验证成功,正在向国内外推广。

    TVP官方团队
    大数据数据分析企业
  • 扩展 Kubernetes 之 CRI

    使用 cri-containerd 的调用流程更为简洁, 省去了上面的调用流程的 1,2 两步

    王磊-AI基础
    Kubernetes
  • 扩展 Kubernetes 之 Kubectl Plugin

    kubectl 功能非常强大, 常见的命令使用方式可以参考 kubectl --help,或者这篇文章

    王磊-AI基础
    Kubernetes
  • 多种登录方式定量性能测试方案

    最近接到到一个测试任务,某服务提供了两种登录方式:1、账号密码登录;2、手机号+验证码登录。要对这两种登录按照一定的比例进行压测。

    八音弦
    测试服务 WeTest
  • 线程安全类在性能测试中应用

    首先验证接口参数签名是否正确,然后加锁去判断订单信息和状态,处理用户增添VIP时间事务,成功之后释放锁。锁是针对用户和订单的分布式锁,使用方案是用的redis。

    八音弦
    安全编程算法
  • 使用CDN(jsdelivr) 优化博客访问速度

    PS: 此篇文章适用于 使用 Github pages 或者 coding pages 的朋友,其他博客也类似.

    IFONLY@CUIT
    CDNGitGitHub开源
  • 扩展 Kubernetes 之 CNI

    Network Configuration 是 CNI 输入参数中最重要当部分, 可以存储在磁盘上

    王磊-AI基础
    Kubernetes
  • 聚焦【技术应变力】云加社区沙龙online重磅上线!

    云加社区结合特殊时期热点,挑选备受关注的音视频流量暴增、线下业务快速转线上、紧急上线防疫IoT应用等话题,邀请众多业界专家,为大家提供连续十一天的干货分享。从视野、预判、应对等多角度,帮助大家全面提升「技术应变力」!

    腾小云
  • 京东购物小程序购物车性能优化实践

    它是小程序开发工具内置的一个可视化监控工具,能够在 OS 级别上实时记录系统资源的使用情况。

    WecTeam
    渲染JavaScripthttps网络安全缓存

扫码关注云+社区

领取腾讯云代金券