更新时间:2024-08-08 GMT+08:00
分享

CICD持续集成与交付

使用说明

AstroZero通过对接软件开发生产线(CodeArts)和代码托管(CodeArts Repo),提供应用代码托管、代码检查、代码编译、验证、部署、发布功能,实现软件持续集成(Continuous Integration,简称CI)和持续交付(Continuous Delivery,简称CD)。

  • 软件开发生产线(CodeArts)是集华为近30年研发实践、前沿研发理念、先进研发工具为一体的一站式云端DevOps平台,面向开发者提供的云服务,即开即用,让开发者快速而又轻松地开启云端开发之旅。更多介绍,请参见软件开发生产线(CodeArts)产品文档
  • 代码托管CodeArts Repo(原CodeHub)源自华为千亿级代码管理经验,基于Git,提供企业代码托管的全方位服务,为软件开发者提供基于Git的在线代码托管服务,包括代码克隆/下载/提交/推送/比较/合并/分支/Code Review等功能。更多介绍,请参见代码托管(CodeArts Repo)帮助文档

场景描述

将在AstroZero开发环境中,开发的某些应用元数据上传到云端代码仓库中进行托管,解决软件开发者跨地域协同、多分支并发、代码版本管理、安全性等方面的问题。通过创建自动交付流水线,完成代码检查、编译构建和部署任务,将这些应用打包成资产包,部署到其他AstroZero环境。

操作流程

CICD持续集成与交付的基本操作流程,如图图1所示。

图1 操作流程图

步骤1:开通CodeArts服务并完成前置操作

  1. 开通软件开发生产线(CodeArts)服务。

    使用华为账号或拥有DevCloud Console FullAccess权限的IAM用户账号(配置权限策略方法请参考创建用户并授权使用软件开发平台控制台),登录CodeArts控制台,区域请选择“华北-北京四”。请根据需求选择规格,这里选择“基础版”,按照提示开通软件开发生产线服务。

  2. 创建项目。

    1. 在CodeArts控制台的总览页面,单击“立即使用”。
    2. 在项目模板中,将鼠标放在Scrum上,单击“选用”。

      如果已有项目,可在“所有项目”中,选择“新建项目”。

    3. 设置项目名称为“testSH”,单击“确定”。

  3. 添加项目成员。

    1. 在所有项目页面,单击已创建项目上的,选择“设置”,进入项目设置页面。
      图2 设置
    2. 在左侧导航栏中,选择“成员管理”,单击“添加成员”。
    3. 根据自身业务需求,选择添加用户的方式(本示例选择“从本企业用户”)。
      图3 选择从本企业用户
    4. 在添加成员页面,选择对应的用户,单击“下一步”
      图4 勾选用户
    5. 根据需要,设置项目角色(本示例设置为“项目经理”)。
      图5 设置项目角色
    6. 设置完成后,单击“保存”

  4. 在“testSH”项目中,新建代码仓库。

    1. 在主菜单中,选择服务 > 代码托管,进入代码托管页面。
    2. 单击“普通新建”,设置代码仓库名称为“testSH1”,其它参数保持默认,单击“确定”。
    3. 在代码仓库列表中,单击已创建的代码仓库“testSH1”。
    4. 单击页面右上角的“克隆/下载”,选择“用HTTPS克隆”,单击URL后的复制图标。
      请记录该地址,该地址为代码仓库的HTTPS方式访问地址。
      图6 用HTTPS克隆

步骤2:在AstroZero上配置代码库

代码仓库用于项目代码的版本管理,在代码托管前,需要在AstroZero上配置代码库对接信息。若需要将不同服务区域(跨地域协同开发场景)的AstroZero开发环境的应用元数据归档,则需要在各个AstroZero开发环境中配置代码库。

AstroZero支持以下两种托管方式,请根据需要选择一种方式配置代码库:

  • 租户级代码库托管:通过配置整个租户的代码仓库(华为云 CodeArts Repo)。配置后,租户开发的应用元数据可以同步到代码仓库,提供历史变更记录、对比等版本管理能力。
    1. 参考如何进入经典开发环境中操作,开发者登录要进行应用代码托管的AstroZero开发环境,在首页上方单击“管理”,进入经典版管理中心。
    2. 在左侧导航栏中,选择“系统管理 > 代码库配置”。
    3. 在右侧租户级代码库配置页面,单击,参考表1设置对接参数,单击“保存”。
      图7 配置对接参数
      表1 代码仓参数说明

      参数

      说明

      仓库地址

      配置为4.d中,记录的代码仓库HTTPS方式访问地址。

      分支

      归档代码用到的仓库分支,默认为“master”。

      1. 使用代码仓库成员的IAM账号,登录CodeArts控制台。
      2. 在左侧菜单栏中,选择“代码托管”。
      3. 在仓库列表中,单击仓库名。
      4. 在“分支”页签,查看当前分支取值,默认为“master”。

      租户名

      开通代码托管服务的华为账号。

      用户名

      设置为仓库成员的IAM用户名。

      密码

      IAM用户登录华为云的登录密码。

  • 项目级代码库托管:以应用为维度,通过配置某个应用的代码仓库,将某应用元数据可以同步到代码仓库,提供历史变更记录、对比等版本管理能力。
    1. 开发者登录要进行应用代码托管的AstroZero经典版开发环境,单击某一需要归档代码的应用,进入应用开发页面。
    2. 在左侧选择,单击右上的
      若之前未绑定过代码库,请参考图9,配置应用代码仓。
      图8 应用代码仓设置入口
      图9 初次配置代码仓
    3. 在弹出的确认页面,确认后单击“确定”。
    4. 参考表1,配置项目级代码仓库。
      其中,“忽略测试脚本”表示是否忽略脚本名以“_test”结尾的脚本,该脚本为开发者在开发应用时创建的测试脚本,脚本命名时以“_test”结尾。勾选表示忽略,勾选后,“_test”结尾的脚本不会归档至代码仓中。
      图10 项目级代码仓库配置

步骤3:进行代码托管

将AstroZero上开发的应用代码元数据归档到代码仓库。这里以归档某开发环境某个应用为例进行说明,您可对多个配置代码库的AstroZero环境的多个应用进行代码托管。

  1. 返回AstroZero经典版开发环境首页,单击某一需要归档代码的应用,进入应用开发页面。
  2. 参考图11图12,在左侧单击

    首次归档应用代码,所有代码显示在“未暂存的更改”下,单击后面的“+”,再单击。设置归档描述信息,单击“确认”,即可归档该应用所有代码。支持选择部分代码归档,在需要归档的代码目录后,单击“+”进行操作即可。

    图11 归档代码
    图12 设置归档描述

  3. 单击“源代码管理”后的,打开代码仓库首页。

    图13 提交代码

  4. 在代码仓库“文件”页签下,单击“Application”,可查看应用的归档代码。

    图14 查看归档应用
    图15 查看应用代码

    代码仓库“提交网络”页签是以流向图的形式展现了某条分支或标签的整个提交(commit)历史(包括动作、时间、提交者、提交系统生成备注和手动填写备注)以及提交历史的关系。

步骤4:配置流水线

流水线提供可视化、可定制的自动交付流水线,支持代码检查、编译构建、部署等多种任务类型。更多关于流水线说明,请参见流水线官网文档

  1. 使用华为账号登录CodeArts控制台,区域选择“华北-北京四”。
  2. 在左侧菜单栏中,选择“所有项目”,在项目列表中单击项目名,进入项目详情页面。
  3. 在左侧导航栏中,选择“持续交付 > 流水线”,进入流水线。
  4. 创建流水线。

    1. 单击“新建流水线”,进入新建流水线页面。
    2. 在“流水线源”中,选择流水线源“Repo”、选择4中创建的仓库、默认分支“master”,单击“下一步”。
    3. 在“模板选择”中,选择系统预置的“应用魔方编译部署”模板,单击“确定”,进入工作流配置页面。

      其中,代码检查任务中已预置好TypeScript代码检查任务,不需要再自定义修改。

  5. 配置流水线。

    1. 在工作流配置页面,单击“构建任务”中的任务,记录任务名称,也可自定义任务名称并记录下来。

      编译构建任务名称和发布任务的名称是一致的,在部署任务中会用到该名称,用于标识从哪个发布任务中获取部署需要的应用包。

    2. 在“参数设置 > 自定义参数”中,配置流水线参数。

      通过将流水线参数传递给各个任务使用,实现了任务间数据流动的统一,用户只需要配置好流水线参数,即可完成编译构建、部署、测试等任务的数据拉通。

      图16 自定义参数
      表2 参数说明

      参数

      说明

      codeBranch

      代码所属的仓库分支。

      • 字符串类型参数。
      • 默认值为“master”。
      • 不是私密参数。
      • 打开“运行时设置”开关,表示单独执行构建任务时支持变更参数值,并且也会把该参数上报流水线。
      • 状态为“已使用”,记录参数已被使用。

      releaseVersion

      流水线版本号。

      • 自增长类型参数。
      • 默认值不用配置,每全新执行一次流水线后,下次执行时该参数值末位数字会自动+1。
      • 不是私密参数。
      • 打开“运行时设置”开关,表示单独执行构建任务时支持变更参数值,并且也会把该参数上报流水线。
      • 状态为“已使用”,记录参数已被使用。

      packageName

      发布后包的名称。

      • 字符串类型参数。
      • 需要自定义默认值,取值为发布后包的名称。
      • 不是私密参数。
      • 打开“运行时设置”开关,表示单独执行构建任务时支持变更参数值,并且也会把该参数上报流水线。
      • 状态为“已使用”,记录参数已被使用。

      repoName

      “编译构建”中的任务名称。

      • 字符串类型参数。
      • 需要自定义默认值,取值为5.a中的任务名称。
      • 不是私密参数。
      • 打开“运行时设置”开关,表示单独执行构建任务时支持变更参数值,并且也会把该参数上报流水线。
      • 状态为“已使用”,记录参数已被使用。

      appcubeDomianName

      需要部署应用的AstroZero环境域名。

      • 字符串类型参数。
      • 需要自定义默认值,配置为需要部署应用的AstroZero环境域名,例如域名为“https://appcuberun.cn-north-4.huaweicloud.com”。
      • 不是私密参数。
      • 打开“运行时设置”开关,表示单独执行构建任务时支持变更参数值,并且也会把该参数上报流水线。
      • 状态为“已使用”,记录参数已被使用。

      appNames

      编译发布的应用包名称,即步骤3:进行代码托管中托管到代码仓库中的应用名称。

      • 字符串类型参数。
      • 需要自定义默认值,配置为代码仓库中的应用名称。如果打包所有应用,则配置为“all”;如果配置为多个应用,应用名称之间用英文空格间隔。
      • 不是私密参数。
      • 打开“运行时设置”开关,表示单独执行构建任务时支持变更参数值,并且也会把该参数上报流水线。
      • 状态为“已使用”,记录参数已被使用。

      boNames

      编译发布的BO包名称,即步骤3:进行代码托管中托管到代码仓库中的BO名称。

      • 字符串类型参数。
      • 需要自定义默认值,配置为代码仓库中的BO名称。如果打包所有BO,则配置为“all”;如果配置为多个BO,BO名称之间用英文空格间隔。
      • 不是私密参数。
      • 打开“运行时设置”开关,表示单独执行构建任务时支持变更参数值,并且也会把该参数上报流水线。
      • 状态为“已使用”,记录参数已被使用。

      complileOptions

      表示在安装应用包时,在导入实例化配置数据之前或者之后执行的脚本。

      • 字符串类型参数。
      • 默认值不用配置,在提交代码,在AstroZero平台打包设置的参数配置会自动提交过来。例如,值为preInstallHandler=安装前置脚本名称,postInstallHandler=安装后置脚本名称
      • 不是私密参数。
      • 打开“运行时设置”开关,表示单独执行构建任务时支持变更参数值,并且也会把该参数上报流水线。
      • 状态为“已使用”,记录参数已被使用。
    3. 在页面左上角根据需要修改流水线名称,名称中建议携带发布部署的应用名和AstroZero环境实例名。
    4. 设置完成后,单击“保存”。

  6. 新增参数。

    1. 在项目页面,单击左侧导航栏中的“持续交付 > 编译构建”,进入编译构建页面。
    2. 根据5.a中记录的任务名称搜索任务,单击搜索到的任务名。
    3. 单击对应任务后的,选择“编辑任务”。
    4. 在“参数设置”页签,单击“添加”,新增图17表3中两个参数。
      图17 新增参数
      表3 新增参数说明

      参数

      说明

      clientId

      在AstroZero环境上部署应用需要调用AstroZero的接口,这里需要配置通过“客户端模式”OAuth鉴权的客户端ID。

      • 字符串类型参数。
      • 需要自定义默认值,配置为“客户端模式”OAuth鉴权的客户端ID,即client_id,获取方法请参考客户端模式接入认证
      • 设置为私密参数。参数为私密参数时,系统会将输入参数做加密存储,使用时进行解密,同时在运行日志里不可见。
      • 关闭“运行时设置”开关。

      clientSecret

      在AstroZero环境上部署应用需要调用AstroZero的接口,这里需要配置通过“客户端模式”OAuth鉴权的客户端鉴权密钥。

      • 字符串类型参数。
      • 需要自定义默认值,配置为“客户端模式”OAuth鉴权的客户端鉴权密钥,即client_secret,获取方法请参考客户端模式接入认证
      • 设置为私密参数。参数为私密参数时,系统会将输入参数做加密存储,使用时进行解密,同时在运行日志里不可见。
      • 关闭“运行时设置”开关。
    5. 设置完成后,单击“保存”。

  7. 返回项目页面,在左侧导航栏中选择“持续交付 > 流水线”,进入流水线。
  8. 单击流水线名称,进入流水线详情页面,单击“全新执行”,一键执行流水线。
  9. 执行完成后,查看执行结果。

    • 单击构建任务旁的,可以下载通过流水线自动构建出来的构建包。
    • 单击任务旁的,可以查看该任务的执行日志。
    • 单击任务旁的,可以单独执行该任务。

  10. 登录部署应用的AstroZero环境,检查是否部署完成。

    • 若部署的环境为其他开发环境,应用会显示在开发环境首页的“库”页签下。
    • 若部署的环境为运行环境,登录AstroZero管理中心,在左侧导航栏中,选择“应用管理 > 应用导航”,可查看到已部署的应用。

扩展知识

步骤3:进行代码托管中是以界面操作方式提交应用代码至代码仓库,AstroZero还支持在开发者控制台中以命令行的方式提交应用代码。在应用开发工作台的导航菜单上,单击,弹出控制台页面。输入“code help”,可查看相关命令行使用说明。
图18 控制台入口
图19 开发者控制台

相关文档