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环境。
步骤1:开通CodeArts服务并完成前置操作
- 开通软件开发生产线(CodeArts)服务。
使用华为账号或拥有DevCloud Console FullAccess权限的IAM用户账号(配置权限策略方法请参考创建用户并授权使用软件开发平台控制台),登录CodeArts控制台,区域请选择“华北-北京四”。请根据需求选择规格,这里选择“基础版”,按照提示开通软件开发生产线服务。
- 创建项目。
- 添加项目成员。
- 在所有项目页面,单击已创建项目上的,选择“设置”,进入项目设置页面。
图2 设置
- 在左侧导航栏中,选择“成员管理”,单击“添加成员”。
- 根据自身业务需求,选择添加用户的方式(本示例选择“从本企业用户”)。
图3 选择从本企业用户
- 在添加成员页面,选择对应的用户,单击“下一步”。
图4 勾选用户
- 根据需要,设置项目角色(本示例设置为“项目经理”)。
图5 设置项目角色
- 设置完成后,单击“保存”。
- 在所有项目页面,单击已创建项目上的,选择“设置”,进入项目设置页面。
- 在“testSH”项目中,新建代码仓库。
步骤2:在AstroZero上配置代码库
代码仓库用于项目代码的版本管理,在代码托管前,需要在AstroZero上配置代码库对接信息。若需要将不同服务区域(跨地域协同开发场景)的AstroZero开发环境的应用元数据归档,则需要在各个AstroZero开发环境中配置代码库。
AstroZero支持以下两种托管方式,请根据需要选择一种方式配置代码库:
- 租户级代码库托管:通过配置整个租户的代码仓库(华为云 CodeArts Repo)。配置后,租户开发的应用元数据可以同步到代码仓库,提供历史变更记录、对比等版本管理能力。
- 参考如何进入经典开发环境中操作,开发者登录要进行应用代码托管的AstroZero开发环境,在首页上方单击“管理”,进入经典版管理中心。
- 在左侧导航栏中,选择“系统管理 > 代码库配置”。
- 在右侧租户级代码库配置页面,单击,参考表1设置对接参数,单击“保存”。
图7 配置对接参数
表1 代码仓参数说明 参数
说明
仓库地址
配置为4.d中,记录的代码仓库HTTPS方式访问地址。
分支
归档代码用到的仓库分支,默认为“master”。
- 使用代码仓库成员的IAM账号,登录CodeArts控制台。
- 在左侧菜单栏中,选择“代码托管”。
- 在仓库列表中,单击仓库名。
- 在“分支”页签,查看当前分支取值,默认为“master”。
租户名
开通代码托管服务的华为账号。
用户名
设置为仓库成员的IAM用户名。
密码
IAM用户登录华为云的登录密码。
- 项目级代码库托管:以应用为维度,通过配置某个应用的代码仓库,将某应用元数据可以同步到代码仓库,提供历史变更记录、对比等版本管理能力。
- 开发者登录要进行应用代码托管的AstroZero经典版开发环境,单击某一需要归档代码的应用,进入应用开发页面。
- 在左侧选择,单击右上的。
- 在弹出的确认页面,确认后单击“确定”。
- 参考表1,配置项目级代码仓库。
其中,“忽略测试脚本”表示是否忽略脚本名以“_test”结尾的脚本,该脚本为开发者在开发应用时创建的测试脚本,脚本命名时以“_test”结尾。勾选表示忽略,勾选后,“_test”结尾的脚本不会归档至代码仓中。图10 项目级代码仓库配置
步骤3:进行代码托管
将AstroZero上开发的应用代码元数据归档到代码仓库。这里以归档某开发环境某个应用为例进行说明,您可对多个配置代码库的AstroZero环境的多个应用进行代码托管。
- 返回AstroZero经典版开发环境首页,单击某一需要归档代码的应用,进入应用开发页面。
- 参考图11和图12,在左侧单击。
首次归档应用代码,所有代码显示在“未暂存的更改”下,单击后面的“+”,再单击。设置归档描述信息,单击“确认”,即可归档该应用所有代码。支持选择部分代码归档,在需要归档的代码目录后,单击“+”进行操作即可。
- 单击“源代码管理”后的,打开代码仓库首页。
图13 提交代码
- 在代码仓库“文件”页签下,单击“Application”,可查看应用的归档代码。
图14 查看归档应用
图15 查看应用代码
代码仓库“提交网络”页签是以流向图的形式展现了某条分支或标签的整个提交(commit)历史(包括动作、时间、提交者、提交系统生成备注和手动填写备注)以及提交历史的关系。
步骤4:配置流水线
流水线提供可视化、可定制的自动交付流水线,支持代码检查、编译构建、部署等多种任务类型。更多关于流水线说明,请参见流水线官网文档。
- 使用华为账号登录CodeArts控制台,区域选择“华北-北京四”。
- 在左侧菜单栏中,选择“所有项目”,在项目列表中单击项目名,进入项目详情页面。
- 在左侧导航栏中,选择“持续交付 > 流水线”,进入流水线。
- 创建流水线。
- 单击“新建流水线”,进入新建流水线页面。
- 在“流水线源”中,选择流水线源“Repo”、选择4中创建的仓库、默认分支“master”,单击“下一步”。
- 在“模板选择”中,选择系统预置的“应用魔方编译部署”模板,单击“确定”,进入工作流配置页面。
- 配置流水线。
- 在工作流配置页面,单击“构建任务”中的任务,记录任务名称,也可自定义任务名称并记录下来。
- 在“参数设置 > 自定义参数”中,配置流水线参数。
通过将流水线参数传递给各个任务使用,实现了任务间数据流动的统一,用户只需要配置好流水线参数,即可完成编译构建、部署、测试等任务的数据拉通。
图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=安装后置脚本名称。
- 不是私密参数。
- 打开“运行时设置”开关,表示单独执行构建任务时支持变更参数值,并且也会把该参数上报流水线。
- 状态为“已使用”,记录参数已被使用。
- 在页面左上角根据需要修改流水线名称,名称中建议携带发布部署的应用名和AstroZero环境实例名。
- 设置完成后,单击“保存”。
- 新增参数。
- 在项目页面,单击左侧导航栏中的“持续交付 > 编译构建”,进入编译构建页面。
- 根据5.a中记录的任务名称搜索任务,单击搜索到的任务名。
- 单击对应任务后的,选择“编辑任务”。
- 在“参数设置”页签,单击“添加”,新增图17和表3中两个参数。
表3 新增参数说明 参数
说明
clientId
在AstroZero环境上部署应用需要调用AstroZero的接口,这里需要配置通过“客户端模式”OAuth鉴权的客户端ID。
- 字符串类型参数。
- 需要自定义默认值,配置为“客户端模式”OAuth鉴权的客户端ID,即client_id,获取方法请参考客户端模式接入认证。
- 设置为私密参数。参数为私密参数时,系统会将输入参数做加密存储,使用时进行解密,同时在运行日志里不可见。
- 关闭“运行时设置”开关。
clientSecret
在AstroZero环境上部署应用需要调用AstroZero的接口,这里需要配置通过“客户端模式”OAuth鉴权的客户端鉴权密钥。
- 字符串类型参数。
- 需要自定义默认值,配置为“客户端模式”OAuth鉴权的客户端鉴权密钥,即client_secret,获取方法请参考客户端模式接入认证。
- 设置为私密参数。参数为私密参数时,系统会将输入参数做加密存储,使用时进行解密,同时在运行日志里不可见。
- 关闭“运行时设置”开关。
- 设置完成后,单击“保存”。
- 返回项目页面,在左侧导航栏中选择“持续交付 > 流水线”,进入流水线。
- 单击流水线名称,进入流水线详情页面,单击“全新执行”,一键执行流水线。
- 执行完成后,查看执行结果。
- 单击构建任务旁的,可以下载通过流水线自动构建出来的构建包。
- 单击任务旁的,可以查看该任务的执行日志。
- 单击任务旁的,可以单独执行该任务。
- 登录部署应用的AstroZero环境,检查是否部署完成。
- 若部署的环境为其他开发环境,应用会显示在开发环境首页的“库”页签下。
- 若部署的环境为运行环境,登录AstroZero管理中心,在左侧导航栏中,选择“应用管理 > 应用导航”,可查看到已部署的应用。