文档首页 > > 理论实践> 持续开发与集成> 持续集成

持续集成

分享
更新时间: 2020/06/08 GMT+08:00

持续集成概述

持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。

代码检查:提高交付质量

加快代码质量的反馈速度至关重要,在代码进入代码库之后能够立即确认代码处于可用状态,这样才能确保在需要的时候可以快速的获取可交付的版本。无论对于开发/测试的配合,还是开发人员自己进行功能验证都非常重要。

  • 持续集成中的代码检查

    由于持续的快速开发和交付,团队发现线上代码质量堪忧,且进入到生产环境的问题修复成本太高,团队需要一种可以在迭代内快速发现问题的自动化手段。

    随着团队规模的扩大,新人不断加入,每个人的编码习惯均不一致,这造成了大量的沟通成本,正在逐步消磨团队的意志。团队需要有效的手段统一每个人的编码习惯,并可以及时提示不健康的代码。确保团队可以健康持续的发展。

  • 代码检查:及时发现代码缺陷,持续看护代码质量,防止代码腐化

    自动化完成代码检查已经是必须的,我们需要解放人力到更有价值的业务逻辑,架构相关的评审工作中。

    团队成员日益增加,统一编码规范非常重要,但是依靠手工这是不可完成的任务。

    代码检查(CodeCheck)是基于云端实现代码质量管理的服务,软件开发者可在编码完成后执行多语言的代码静态检查和安全检查,获取全面的质量报告,并提供缺陷的改进建议和趋势分析,有效管控代码质量,降低解决成本。

  • DevCloud代码检查实践
    1. 进入项目,单击页面上方菜单代码 > 代码检查 ,进入“代码检查”页面。
    2. 单击“新建任务”按钮,选择指定的代码仓库作为代码检查的目标仓库。
    3. 填写任务名称,并选择检查语言。单击确定按钮,完成任务创建。
    4. 代码检查任务的执行与详解

      单击右上角“开始检查”即可开始执行代码检查任务。

      • 代码检查的结果出来了,如何定位问题和进行修复是个头疼的问题。
      • 如何帮助开发人员理解问题和建议修复方式?
      • 对于暂时无法修复的问题需要进行标识。

      针对以上问题,在代码检查任务的详情页中可以看到,任务左上共有“概览”“代码问题”“代码度量”“设置”四个选项。其中前三个选项均为代码检查的执行结果,“设置”是对该任务的高级设置,用户可以通过“设置”进行高级定制。

      1. 概览

        “概览”界面用户可以直观地看到代码检查的执行结果,并有相应的图示进行展示。

          

      2. 代码问题

        “代码问题”页可以看到代码中的具体问题及相应的修改建议。对于每一条代码问题,都可以进行快速在线修改,更改问题状态为未解决、已解决、已忽略,以及指派负责人。

          

      3. 代码度量

        “代码度量”页可以按文件查看代码的圈复杂度、代码重复率。

          

      4. 设置
        “设置”页可以对任务信息进行修改,包括基本信息、规则集、执行计划、高级选项等。
        • 基本信息:可以更改任务名称、检查语言,并修改代码检查时的编译工具、环境等信息。

            

        • 规则集:规则集是进行代码检查时所使用的规则的集合,可以选用系统内置的规则集或者自定义的规则集。

            

        • 执行计划:设置执行计划,以触发代码检查任务的执行。

            

        • 高级选项

          新问题起始时间:指定日期之后的问题列为新问题。

          忽略的文件集合:选中代码仓库中的文件或文件夹,以排除检查。

            

    想要了解详细的代码检查操作方法,请见使用静态代码检查确保编码规范的有效落地

编译构建:一站式的持续集成,快速灵活地构建软件包

在高度分散和异构化的IT运维环境下,开发部与运维部应达成以下共识:

  1. 开发部跟运维部应该紧密合作,建立共同的目标和共同解决问题的机制。
  2. 开发的工作与运维的工作应该解耦,运维更多是将IT运维任务转变为自助、自动化服务,把基础架构的配置能力交给开发,因为没有人比我们更清楚应用的运行环境。
  3. 保证每个环境(开发调测环境、测试环境、QA环境、生产环境)都保持一致,避免因为环境不一致导致的各种问题。后面统一使用Docker的方式将应用与环境统一打包到镜像保持环境一致。
  4. 持续不断的对应用进行验证,确保应用总是处于可部署的状态并建立持续反馈回路,防止问题代码进入生产环境。

组件和依赖管理

在构建或运行软件时,软件的一部分要依赖于另一部分,就产生了依赖关系,而更好的管理项目中有依赖关系的组件和库文件,就成了配置管理中重要的一环。

在软件项目中,有适当的管理依赖的方法,其中比较常见有几种:一种是应用版本控制库对以来进行管理;一种是显式的声明他们,例如应用Maven进行项目的构建;还有一种是使用依赖管理工具,管理自己的依赖库。

在DevCloud中你可以针对自己的项目情况,灵活的使用这些方法。关于应用版本控制库和显式声明来管理依赖的方式在此不做详细说明,我们主要看看如何通过DevCloud,更便捷的管理项目的依赖。

  • 私有依赖库

    DevCloud提供企业级的私有依赖库,用户可以将项目内部依赖的私有依赖组件放到私有依赖库中进行管理,并可对仓库进行多种配置。

      

    依赖包的上传方式有三种:

    1. 在私有依赖库中单击“上传”按钮即可上传依赖包。

        

    2. 通过DevCloud编译构建任务,添加配置Maven私有依赖库步骤,直接将构建生成的依赖包归档到私有依赖库中。

        

    3. 通过修改本地的配置文件信息,实现本地构建后直接将组件上传至DevCloud的私有依赖库中进行管理。

      可从依赖库中直接生成配置信息,通过复制或下载配置文件直接替换的方式,修改本地配置信息。

        

    想要了解详细的私有依赖库操作方法,请见使用私有依赖库管理私有公共组件

CI at DevCloud

持续集成是DevCloud及其他所有DevOps研发工具的核心功能。在DevCloud中,持续集成覆盖两大功能模块——编译构建和发布。针对使用Docker等容器镜像的项目而言,持续集成这一过程当中,除了将构建包上传到发布仓库外,又将构建成功的镜像发布至容器镜像服务SWR当中。下面将从传统项目与容器镜像项目两个角度对DevCloud中的持续集成过程进行阐述。

  • 传统项目持续集成

    在DevCloud中,只需用户配置好编译构建任务,并选择提交代码时触发流水线,即可实现持续集成。

    • 编译构建实践
      1. 创建编译构建任务:
        1. 单击页面上方菜单构建&发布 > 编译构建 ,进入“编译构建”页面。
        2. 根据页面提示输入任务名称,选择源码源、源码仓库、分支、构建模板。

          针对不同的代码仓库、语言种类,需要选择对应的、适当的构建模板。用户也可以不选择模板,直接进入下一步骤。

        目前,DevCloud已支持大部分主流语言的构建,想要了解更多请参阅编译构建用户指南

      2. 编辑构建任务
        1. 编辑构建步骤:构建任务的搭建采用模块化设计,通过提供丰富的原子操作允许开发人员快速搭建自己的构建流程。

          此操作的目的在于填写构建任务所需的信息。用户在此操作过程中一般需要完成诸如“包名”“发布版本号”等信息的填写。用户也可以在此操作中添加或删除构建步骤。

          对于传统项目而言,编译构建的核心功能就在于构建。以Maven项目为例,Maven构建即为Maven项目的核心。除Maven之外,DevCloud还支持其他多种项目、多种语言类型的编译构建。

          构建任务一般还包括上传至发布仓库功能。用于存储构建好的软件包。

            

        2. 参数设置如果任务中涉及到需要使用参数的话,可以在此处进行参数的定义。

            

        3. 执行计划:在此设置执行计划以确保任务“手工/定时”执行。

          执行计划是“持续集成”的一部分,通过设置每日/周定时执行,可实现每日一次、每周多次集成,符合“持续”理念。

        4. 持续集成:在源码选择 > 高级设置中,开启“提交代码触发执行”
      3. 执行构建任务

        单击“执行”按钮,即可开始构建。

    • 发布仓库实践

      “构建步骤”中添加了“上传软件至发布库”这一步骤的构建任务,执行成功后会把构建产物上传至发布仓库中。

      可通过发布仓库进行查看生成的构建包。

  • 容器镜像项目持续集成

    这里的容器镜像项目意为“使用Docker等容器镜像的项目”,具体实现步骤与“传统项目”类似。只需在编译构建过程中开通容器镜像服务SWR并加入步骤“制作镜像并推送到SWR仓库”步骤,构建成功后,镜像即可上传至SWR。

    容器镜像项目与传统项目的区别,在代码仓库中即有体现,以使用Docker的项目为例,代码仓库中必然包含Dockerfile文件。

    • 容器镜像服务SWR

      Docker容器镜像是重要的交付件,需要进行统一存储和管理。

      华为云内置了容器镜像服务SWR,可以统一管理镜像。支持镜像版本管理,也支持不同项目间的镜像隔离,权限控制。

      登录容器镜像服务SWR官网,单击“立即使用”,即可使用容器镜像。

    • 容器镜像编译构建实践
      1. 与“传统项目”相同,需要新建编译构建任务。
      2. 在构建步骤中添加步骤“制作镜像并推送到SWR仓库”,并填写容器信息。
      3. 构建任务执行成功后,登录SWR,即可查看相应镜像。

          

    为了在部署中应用到已经上传的镜像,需要于编码阶段,在项目的代码仓库中写入相应的拉取镜像代码。

    想要了解详细的编译构建操作方法,请见使用持续集成,加快代码质量反馈速度

  

分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

智能客服提问云社区提问