软件开发平台 DevCloud软件开发平台 DevCloud

计算
弹性云服务器 ECS
裸金属服务器 BMS
云手机 CPH
专属主机 DeH
弹性伸缩 AS
镜像服务 IMS
函数工作流 FunctionGraph
云耀云服务器 HECS
VR云渲游平台 CVR
特惠算力专区
存储
对象存储服务 OBS
云硬盘 EVS
云备份 CBR
弹性文件服务 SFS
存储容灾服务 SDRS
云硬盘备份 VBS
云服务器备份 CSBS
数据快递服务 DES
专属企业存储服务
云存储网关 CSG
专属分布式存储服务 DSS
CDN与智能边缘
内容分发网络 CDN
智能边缘云 IEC
智能边缘小站 IES
智能边缘平台 IEF
人工智能
AI开发平台ModelArts
华为HiLens
图引擎服务 GES
图像识别 Image
文字识别 OCR
自然语言处理 NLP
内容审核 Moderation
图像搜索 ImageSearch
医疗智能体 EIHealth
园区智能体 CampusGo
企业级AI应用开发专业套件 ModelArts Pro
人脸识别服务 FRS
对话机器人服务 CBS
视频分析服务 VAS
语音交互服务 SIS
知识图谱 KG
人证核身服务 IVS
IoT物联网
设备接入 IoTDA
设备管理 IoTDM(联通用户专用)
全球SIM联接 GSL
IoT开发者服务
IoT数据分析
车联网服务 IoV
路网数字化服务 DRIS
IoT边缘 IoTEdge
设备发放 IoTDP
开发与运维
软件开发平台 DevCloud
项目管理 ProjectMan
代码托管 CodeHub
流水线 CloudPipeline
代码检查 CodeCheck
编译构建 CloudBuild
部署 CloudDeploy
云测 CloudTest
发布 CloudRelease
移动应用测试 MobileAPPTest
CloudIDE
Classroom
开源镜像站 Mirrors
应用魔方 AppCube
云性能测试服务 CPTS
应用管理与运维平台 ServiceStage
云应用引擎 CAE
视频
实时音视频 SparkRTC
视频直播 Live
视频点播 VOD
媒体处理 MPC
视频接入服务 VIS
管理与监管
统一身份认证服务 IAM
消息通知服务 SMN
云监控服务 CES
应用运维管理 AOM
应用性能管理 APM
云日志服务 LTS
云审计服务 CTS
标签管理服务 TMS
资源管理服务 RMS
应用身份管理服务 OneAccess
区块链
区块链服务 BCS
可信跨链服务 TCS
智能协作
IdeaHub
开发者工具
SDK开发指南
API签名指南
DevStar
HCloud CLI
Terraform
Ansible
API问题定位指导
云生态
云市场
合作伙伴中心
华为云培训中心
其他
管理控制台
消息中心
产品价格详情
系统权限
我的凭证
客户关联华为云合作伙伴须知
公共问题
宽限期保留期
奖励推广计划
活动
容器
云容器引擎 CCE
云容器实例 CCI
容器镜像服务 SWR
应用编排服务 AOS
多云容器平台 MCP
基因容器 GCS
容器洞察引擎 CIE
云原生服务中心 OSC
容器批量计算 BCE
容器交付流水线 ContainerOps
应用服务网格 ASM
网络
虚拟私有云 VPC
弹性公网IP EIP
弹性负载均衡 ELB
NAT网关 NAT
云专线 DC
虚拟专用网络 VPN
云连接 CC
VPC终端节点 VPCEP
数据库
云数据库 RDS
数据复制服务 DRS
文档数据库服务 DDS
分布式数据库中间件 DDM
云数据库 GaussDB (for openGauss)
云数据库 GaussDB(for MySQL)
云数据库 GaussDB NoSQL
数据管理服务 DAS
数据库和应用迁移 UGO
大数据
MapReduce服务 MRS
数据湖探索 DLI
表格存储服务 CloudTable
可信智能计算服务 TICS
推荐系统 RES
云搜索服务 CSS
数据可视化 DLV
数据湖治理中心 DGC
数据接入服务 DIS
数据仓库服务 GaussDB(DWS)
应用中间件
微服务引擎 CSE
分布式消息服务Kafka版
分布式消息服务RabbitMQ版
API网关 APIG
分布式缓存服务 DCS
分布式消息服务RocketMQ版
企业应用
域名注册服务 Domains
云解析服务 DNS
云速建站 CloudSite
网站备案
华为云WeLink
会议
隐私保护通话 PrivateNumber
语音通话 VoiceCall
消息&短信 MSGSMS
云管理网络
SD-WAN 云服务
边缘数据中心管理 EDCM
云桌面 Workspace
应用与数据集成平台 ROMA Connect
ROMA资产中心 ROMAExchange
API全生命周期管理 ROMA API
安全与合规
安全技术与应用
DDoS防护 ADS
Web应用防火墙 WAF
云防火墙 CFW
应用信任中心 ATC
企业主机安全 HSS
容器安全服务 CGS
云堡垒机 CBH
数据库安全服务 DBSS
数据加密服务 DEW
数据安全中心 DSC
云证书管理服务 CCM
SSL证书管理 SCM
漏洞扫描服务 VSS
态势感知 SA
威胁检测服务 MTD
管理检测与响应 MDR
迁移
主机迁移服务 SMS
对象存储迁移服务 OMS
云数据迁移 CDM
专属云
专属计算集群 DCC
解决方案
高性能计算 HPC
SAP
游戏云
混合云灾备
华为工业云平台 IMC
价格
成本优化最佳实践
专属云商业逻辑
用户服务
帐号中心
费用中心
成本中心
资源中心
企业管理
工单管理
客户运营能力
国际站常见问题
支持计划
专业服务
合作伙伴支持计划
更新时间:2021-07-27 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,即可查看相应镜像。

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

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

分享:

    相关文档

    相关产品

关闭导读