美文网首页
09_CI/CD的概念和相关工具

09_CI/CD的概念和相关工具

作者: 地学小哥 | 来源:发表于2020-02-27 12:40 被阅读0次

内容摘要:持续集成Continuous Integration(CI)和持续交付Continuous Delivery(CD)是提高团队协同生产力的关键技术。很多时候一个软件发布后更新和维护是痛点,因为一个版本的迭代和升级往往不是平滑过渡的。但是在互联网时代,跟不上产品迭代节奏往往就要走向失败。在谈完GIT和DevOps理念之后,我们看看具体可以有那些工具可以帮助我们提高生产力。

1、可持续的概念

在当今世界,特别是在科学研究方面,新技术方法层出不穷。但好的技术方法,如果不被人使用,不去做推广,那就永远都是小众游戏。习总书记曾经说过:科学技术必须同社会发展相结合,学得再多,束之高阁,只是一种猎奇,只是一种雅兴,甚至当作奇技淫巧,那就不可能对现实社会产生作用

有人说:“科研高大上,生产用不上”。面对科研成果没法转化的痛点问题越来越被重视。国家近年来一直期望通过政策引导,打破从基础研究、应用研究到产业化的“死亡之谷”,促进科研成果产业化。

我个人认为:地球科学技术要想服务社会,必须通过IT驱动来加速新方法和数据的流转,提升使用价值,让用户对科研成果更有获得感。

接下来我们就进入主题,谈谈当科研成果推到仓库里面,后续还能干些啥。近年来,基于云设施的互联网软件的开发和发布,已经形成了一套标准流程,最重要的组成部分就是持续集成

持续集成的目的,就是让产品可以快速迭代,同时还能保持高质量。它的核心措施是,代码集成到GIT仓库之前,必须通过自动化测试。只要有一个测试用例失败,就不能集成。

持续交付指的是,频繁地将软件的新版本,交付给质量团队或者用户,以供评审。如果评审通过,代码就进入生产阶段。

持续交付可以看作持续集成的下一步。它强调的是,不管怎么更新,软件是随时随地可以交付的。下图是代码推送到Github之后,通过工具可以帮你做的一系列工作:

图1 可持续集成与部署流程图

图中很多词大家可能不认识,但是有些图标应该熟悉吧。最左边的小八爪鱼就是Github的logo,当push到github仓库后,通过webhooks设置,可以让你的项目通过既定测试和集成流程开展后续工作,没问题后打包成docker容器,再通过k8s(kubernetes)等容器编排工具分发到云上。

你不用担心的是,只要配置好,这后续一切都是自动的。解决了那些问题呢?就是以前需要很多人力物力去测试、集成等一系列费力不讨好的工作,交给生产力工具去完成。如果你对图1还不明白,哪首先的就是要好好琢磨理解呦...

2、那些工具可以用

现在的CI/CD工具应该可以用眼花缭乱来形容,各大厂商说提供DevOps工具的广告里面,肯定涉及到到这方面的工作。知道CI/CD的概念和用好这些工具还是两码事,特别是具体到如何配置复杂的脚本,根据不同语言和基础设施来调试、运行,更是比较花费精力的。

但是大体上我觉得可以分为两类,一种是需要你自己部署的,一种是已经在云上可以直接用的。著名的Gitlab CI和Jenkins提供前者,部署到私有云中就可以直接用。而Travis和Azure Pipelines是可以直接在云上用的,特别是Travis 和 Azure Pipeline 对于开源项目可以免费使用。

个人觉得如果是科研还是直接用云上,它们都会构建和测试,免费给你提供虚拟机、网络带宽和各种环境资源,还不用担心稳定性,有啥不好呢?

3、 结合一个实例来看看

在我们团队的GEOIST软件包中也用到了上面两个工具,请看下图:

图2 GEOIST项目中的CI技术应用

图中最下面一排小标志,就是项目中用到的一些技术,最左边的是Travis,最右边的是Azure Pipelines。绿色的提示信息代表当前项目的测试状态(如果有问题会出现红色提示)。要配置好这两个工具,需要在工程中使用yml文件进行配置,在geoist根目录下你会发现有.travis.yml和azure-pipelines.yml两个文件,这两个文件里面你可以设置测试环境的一些要求和包依赖。

让我们再看看,如果点开AzurePipelines的图标,直接会出现下面界面:


图3 Azure Pipelines的CI界面

一般GIT的Push命令执行后,根据项目要测试的内容多少,几分钟就可以完成测试,根据yml中设置的内容,每一阶段的结果如图4所示。


图4 Azure Pipelines的测试结果

我们这个项目中,仅针对python3.6环境进行了集成测试,通过后就直接发布到Azure的云上面去了,对于用户来讲下次打开浏览器的jupyter就可以开始使用最新版本啦!对于科研人员来讲,算法写好,git push后啥事也不用管了,是不是很方便呢?

相关文章

  • 09_CI/CD的概念和相关工具

    内容摘要:持续集成Continuous Integration(CI)和持续交付Continuous Delive...

  • 14-进程和任务计划

    本章内容 ◆ 进程相关概念◆ 进程工具◆ 系统性能相关工具◆ 计划任务 进程概念 进程,线程和协程 进程相关概念 ...

  • 检测内存工具相关概念

    一 为什么要了解这些相关概念: 在使用mat或者android studio工具检测内存的时候, 会看到一系列的视...

  • 信息系统审计过程

    1. IS审计和保障标准、指南、工具、职业道德规范 2. 风险评估概念、工具及技术 3. 信息系统相关控制目标和控...

  • 深度剖析Devops系列(2)--工具篇

    本篇需要探讨的是Devops相关工具链以及CI/CD在Devops中的重要位置 : 虽然我们强调,devop...

  • Gitlab CI/CD

    Gitlab CI/CD 概念 DevOps Development 和 Operations 的组合,传统的软件...

  • 20170822 进程和计划任务

    进程相关概念系统进程管理工具任务计划 一、进程相关概念 定义:进程(Process)是运行中的程序的一个副本,是被...

  • cd - 和 cd ..的区别

    cd - 是表示返回上一次的工作目录,cd ..表示的是返回上一级的目录(“次” 与 “级”的关系) 比如当前面的...

  • JavaBean组件学习笔记

      本文涉及重要概念:反射、内省、BeanUtils工具、JSP标签。  这几个概念看起来相关性不大,其实都是用于...

  • 缓存的相关概念和应用

    一般都是用Redis或者Memcached来做数据的缓存,让程序的读取效率更高,以此缓解数据库的压力。 缓存穿透 ...

网友评论

      本文标题:09_CI/CD的概念和相关工具

      本文链接:https://www.haomeiwen.com/subject/psrthhtx.html