华为云DevOps系列之 —— 持续部署与发布(七)制品和包管理

举报
ruochen 发表于 2021/08/31 12:43:54 2021/08/31
【摘要】 华为云DevOps系列之 —— 持续部署与发布(七)制品和包管理

软件制品的基本概念

  • 软件研发过程中的“源码”和“软件制品包”(二进制包)都是很关键的资产
  • 软件制品包通常是源码文件的集合或者编译后的产物,主要有 二进制包压缩包 两种形式
  • 软件制品包的管理和复用在 发布管理 有着关键的作用
  • 源码文件:文件名、版本、大小、创建时间
  • 软件制品文件:文件名、版本、大小、创建时间、依赖、许可、风险
  • 下表格是源码文件与包文件的对比
源码文件 包文件
经常频繁修改 修改较少
一般较小 通常较大
增量修改 覆盖修改
修改增量存储 修改全量存储
频繁对比,分支,标签 基本没有
属性值较少 属性值多
异地分发简单 异地分发较困难
  • 软件制品一般的生命周期环节比较多,需要管理更多的原属性来标识不同阶段的状态
  • 通常软件制品不放在源码库中一同管理

软件制品的一般管理方法

  • 包文件通常不放在源码库中管理,而是使用专门的 包文件仓库(repository)进行存储并配合包文件依赖管理工具(Maven、npm、lvy等)进行使用
  • 包文件管理仓库可以分为 本地仓库私服仓库中央仓库
    • 本地仓库是指开发者个人PC中包文件的存储
    • 私服仓库通常是企业为了提升包文件使用性能搭建的局域网内共用的包文件仓库,通常使用开源的 Nexus、Artifactory 等工具搭建
    • 中央仓库是指开源包文件的共享社区

软件制品库的基本概念

  • 软件制品库就是指能够统一管理各种类型的二进制制品,同时无缝对接现有的标准化构建和发布工具软件平台

软件制品库在 DevOps 工具链中的作用

  • “软件包”及其属性的管理是发布过程管理的基础,也是软件开发过程中的重要资产
  • “软件制品库”,用于管理软件开发过程产生的“软件包”,它是持续集成和持续交付的重要环节,软件包的发布评审、追溯和安全控制等操作通常在其中运行
  • 软件服务变更通常在一个分布式、复杂的环境中进行。发布管理 对于保障软件服务正确快速变更有种不可或缺的意义,发布管理能力除了是交付过程必备环节,随着对软件交付速度不断提升的诉求及激烈的市场竞争,它也逐渐成为一种核心竞争力
  • 软件开发交付过程中,随着松耦合架构的推广,开源构件及框架的广泛使用,持续集成(CI)与持续交付(CD)等自动化手段的逐渐普及,软件构件的复用及依赖管理对发布准确性和及时性的影响越来越大,逐渐受到重视并日益规范。特别是在中大型项目中,良好的构件管理能带来较大的发布效率和软件质量提升

典型的软件制品

  • 软件制品有多种格式,如 Maven、Pypi、NPM 等

Maven

  • Maven 是一个项目管理工具,它包含了一个项目对象模型(Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑
  • 当你使用 Maven 的时候,你用一个明确定义的项目对象模型来描述你的项目,然后 Maven 可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件

NPM

  • NPM 全程是 Node Package Manager,是一个 NodeJS 包管理和分发工具,已经成为了非官方的发布 Node 模块(包)的标准

pip

  • pip 是一个现代的,通用的 Python 包管理工具。提供了对 Python 包的查找、下载、安装、卸载等功能

DevCloud 中的软件制品库

  • 私有依赖库: 私有依赖库是由华为云提供的二方组件仓库,提供组织内部私有二进制组件的管理与共享,目前只支持 Maven 格式的组件管理,下一步将提供 NPM、Python、GO 等组件的管理
  • 软件发布库:是面向软件开发者提供软件发布的云服务,提供软件仓库、软件发布、发布包下载、发布包元数据管理等功能,通过安全可靠的软件仓库,实现软件包版本管理,提升发布质量和效率,实现产品的持续发布
  • 开源镜像站:华为开源镜像站(Mirrors)是由华为云提供的三方组件仓库,主要提供开源组件、开源操作系统及开源DevOps工具等下载,致力为用户提供全面、高速、可信的开源组件/OS/工具下载服务
  • 容器镜像服务:华为云容器镜像服务(SoftWare Repository for Container)是一种支持容器镜像全生命周期管理的服务,提供简单易用、安全可靠的镜像管理功能,帮助用户快速部署容器化服务

华为开源镜像站

  • 华为开源镜像站(Mirrors)是由华为云提供的三方组件仓库,主要提供开源组件、开源操作系统及开源DevOps工具等下载,致力为用户提供全面、高速、可信的开源组件/OS/工具下载服务

私有依赖库 ColudArtifact

  • 私有依赖库是提供企业内部管理,私有公共组件的私服,适配各种语言及依赖包管理工具

发布库 CloudRelease

  • 为软件开发企业提供管理软件发布过程的能力,保障软件发布过程的规范化、可视化及可追溯。相对于软件开发过程中的“源代码”,发布服务关注和管理的是开发产生的待部署的”软件包“(通常由源码编译构建或打包而成)及其生命周期元数据(如名称、大小等基本属性、由哪些源码生成、构建时间等)
  • 发布库服务目标:通过安全可靠的软件仓库,实现软件包版本管理,提升发布质量和效率,实现产品的持续发布

发布库特性

  • 丰富的文件操作:支持文件重命名、批量删除、批量恢复、上传、下载、文件名搜索等操作
  • 构建包自动归档:编译构建属性自动关联软件包,编译构建产物自动归档到发布库
  • 服务无缝集成:支持构建服务快速上传、部署服务从发布库快速取包部署
  • 多视图追溯:提供目录、构建和发布三种视图支持用户进行软件生命周期追溯

DevCloud 发布场景流程图

  • 开发者可以基于发布服务提供的多类型软件仓库能力,配合编译构建、部署、流水线服务快速搭建起持续交付自动化能力,实现快速发布

什么是容器镜像管理

  • 容器化程序越来越高,企业中使用容器部署的应用越来越多,容器镜像也越来越多,为保证容器镜像的安全性和客观理性,需要制定标准的容器管理组织方式
  • 企业应用镜像需要标准化管理,推荐以下几个层次的镜像管理
    • OS层:OS 的基础镜像,包含各种 Linux 操作系统及不同版本
    • 依赖层:各种与中间件的运行环境,如 Java,Python,Go 等
    • 应用中间件层:各种软件层,包括中间件,数据库等
    • 用户业务应用层:业务应用层,比如基于 tomcat 的各种 OA、ERP 等业务应用

如何进行容器镜像管理

最后,欢迎大家关注我的个人微信公众号 『小小猿若尘』,获取更多IT技术、干货知识、热点资讯。同时,我在公众号中分享了精心整理的一些视频资料(包括 Python全栈教程、AI教程、前端、数据库等),大家回复相应关键词即可获取网盘视频链接,感谢大家的关注😊

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。