网络
虚拟私有云 VPC
弹性公网IP EIP
弹性负载均衡 ELB
NAT网关 NAT
云专线 DC
虚拟专用网络 VPN
云连接 CC
VPC终端节点 VPCEP
企业路由器 ER
企业交换机 ESW
全球加速 GA
企业连接 EC
云原生应用网络 ANC
安全与合规
安全技术与应用
Web应用防火墙 WAF
企业主机安全 HSS
云防火墙 CFW
安全云脑 SecMaster
DDoS防护 AAD
数据加密服务 DEW
数据库安全服务 DBSS
云堡垒机 CBH
数据安全中心 DSC
云证书管理服务 CCM
威胁检测服务 MTD
态势感知 SA
认证测试中心 CTC
边缘安全 EdgeSec
应用中间件
微服务引擎 CSE
分布式消息服务Kafka版
分布式消息服务RabbitMQ版
分布式消息服务RocketMQ版
API网关 APIG
分布式缓存服务 DCS
多活高可用服务 MAS
事件网格 EG
管理与监管
统一身份认证服务 IAM
消息通知服务 SMN
云监控服务 CES
应用运维管理 AOM
应用性能管理 APM
云日志服务 LTS
云审计服务 CTS
标签管理服务 TMS
配置审计 Config
应用身份管理服务 OneAccess
资源访问管理 RAM
组织 Organizations
资源编排服务 RFS
优化顾问 OA
IAM 身份中心
云运维中心 COC
资源治理中心 RGC
解决方案
高性能计算 HPC
SAP
混合云灾备
开天工业工作台 MIW
Haydn解决方案工厂
数字化诊断治理专家服务
云生态
云商店
合作伙伴中心
华为云开发者学堂
华为云慧通差旅
开发与运维
软件开发生产线 CodeArts
需求管理 CodeArts Req
流水线 CodeArts Pipeline
代码检查 CodeArts Check
编译构建 CodeArts Build
部署 CodeArts Deploy
测试计划 CodeArts TestPlan
制品仓库 CodeArts Artifact
移动应用测试 MobileAPPTest
CodeArts IDE Online
开源镜像站 Mirrors
性能测试 CodeArts PerfTest
应用管理与运维平台 ServiceStage
云应用引擎 CAE
开源治理服务 CodeArts Governance
华为云Astro轻应用
CodeArts IDE
Astro工作流 AstroFlow
代码托管 CodeArts Repo
漏洞管理服务 CodeArts Inspector
联接 CodeArtsLink
软件建模 CodeArts Modeling
Astro企业应用 AstroPro
CodeArts盘古助手
华为云Astro大屏应用
计算
弹性云服务器 ECS
Flexus云服务
裸金属服务器 BMS
云手机服务器 CPH
专属主机 DeH
弹性伸缩 AS
镜像服务 IMS
函数工作流 FunctionGraph
云耀云服务器(旧版)
VR云渲游平台 CVR
Huawei Cloud EulerOS
云化数据中心 CloudDC
网络
虚拟私有云 VPC
弹性公网IP EIP
弹性负载均衡 ELB
NAT网关 NAT
云专线 DC
虚拟专用网络 VPN
云连接 CC
VPC终端节点 VPCEP
企业路由器 ER
企业交换机 ESW
全球加速 GA
企业连接 EC
云原生应用网络 ANC
CDN与智能边缘
内容分发网络 CDN
智能边缘云 IEC
智能边缘平台 IEF
CloudPond云服务
安全与合规
安全技术与应用
Web应用防火墙 WAF
企业主机安全 HSS
云防火墙 CFW
安全云脑 SecMaster
DDoS防护 AAD
数据加密服务 DEW
数据库安全服务 DBSS
云堡垒机 CBH
数据安全中心 DSC
云证书管理服务 CCM
威胁检测服务 MTD
态势感知 SA
认证测试中心 CTC
边缘安全 EdgeSec
大数据
MapReduce服务 MRS
数据湖探索 DLI
表格存储服务 CloudTable
可信智能计算服务 TICS
推荐系统 RES
云搜索服务 CSS
数据可视化 DLV
数据接入服务 DIS
数据仓库服务 GaussDB(DWS)
数据治理中心 DataArts Studio
湖仓构建 LakeFormation
智能数据洞察 DataArts Insight
应用中间件
微服务引擎 CSE
分布式消息服务Kafka版
分布式消息服务RabbitMQ版
分布式消息服务RocketMQ版
API网关 APIG
分布式缓存服务 DCS
多活高可用服务 MAS
事件网格 EG
开天aPaaS
应用平台 AppStage
开天企业工作台 MSSE
开天集成工作台 MSSI
API中心 API Hub
云消息服务 KooMessage
交换数据空间 EDS
云地图服务 KooMap
云手机服务 KooPhone
组织成员账号 OrgID
云空间服务 KooDrive
管理与监管
统一身份认证服务 IAM
消息通知服务 SMN
云监控服务 CES
应用运维管理 AOM
应用性能管理 APM
云日志服务 LTS
云审计服务 CTS
标签管理服务 TMS
配置审计 Config
应用身份管理服务 OneAccess
资源访问管理 RAM
组织 Organizations
资源编排服务 RFS
优化顾问 OA
IAM 身份中心
云运维中心 COC
资源治理中心 RGC
区块链
区块链服务 BCS
数字资产链 DAC
华为云区块链引擎服务 HBS
解决方案
高性能计算 HPC
SAP
混合云灾备
开天工业工作台 MIW
Haydn解决方案工厂
数字化诊断治理专家服务
价格
成本优化最佳实践
专属云商业逻辑
云生态
云商店
合作伙伴中心
华为云开发者学堂
华为云慧通差旅
其他
管理控制台
消息中心
产品价格详情
系统权限
客户关联华为云合作伙伴须知
公共问题
宽限期保留期
奖励推广计划
活动
云服务信任体系能力说明
开发与运维
软件开发生产线 CodeArts
需求管理 CodeArts Req
流水线 CodeArts Pipeline
代码检查 CodeArts Check
编译构建 CodeArts Build
部署 CodeArts Deploy
测试计划 CodeArts TestPlan
制品仓库 CodeArts Artifact
移动应用测试 MobileAPPTest
CodeArts IDE Online
开源镜像站 Mirrors
性能测试 CodeArts PerfTest
应用管理与运维平台 ServiceStage
云应用引擎 CAE
开源治理服务 CodeArts Governance
华为云Astro轻应用
CodeArts IDE
Astro工作流 AstroFlow
代码托管 CodeArts Repo
漏洞管理服务 CodeArts Inspector
联接 CodeArtsLink
软件建模 CodeArts Modeling
Astro企业应用 AstroPro
CodeArts盘古助手
华为云Astro大屏应用
存储
对象存储服务 OBS
云硬盘 EVS
云备份 CBR
高性能弹性文件服务 SFS Turbo
弹性文件服务 SFS
存储容灾服务 SDRS
云硬盘备份 VBS
云服务器备份 CSBS
数据快递服务 DES
云存储网关 CSG
专属分布式存储服务 DSS
数据工坊 DWR
地图数据 MapDS
键值存储服务 KVS
容器
云容器引擎 CCE
云容器实例 CCI
容器镜像服务 SWR
云原生服务中心 OSC
应用服务网格 ASM
华为云UCS
数据库
云数据库 RDS
数据复制服务 DRS
文档数据库服务 DDS
分布式数据库中间件 DDM
云数据库 GaussDB
云数据库 GeminiDB
数据管理服务 DAS
数据库和应用迁移 UGO
云数据库 TaurusDB
人工智能
AI开发平台ModelArts
华为HiLens
图引擎服务 GES
图像识别 Image
文字识别 OCR
自然语言处理 NLP
内容审核 Moderation
图像搜索 ImageSearch
医疗智能体 EIHealth
企业级AI应用开发专业套件 ModelArts Pro
人脸识别服务 FRS
对话机器人服务 CBS
语音交互服务 SIS
人证核身服务 IVS
视频智能分析服务 VIAS
城市智能体
自动驾驶云服务 Octopus
盘古大模型 PanguLargeModels
IoT物联网
设备接入 IoTDA
全球SIM联接 GSL
IoT数据分析 IoTA
路网数字化服务 DRIS
IoT边缘 IoTEdge
设备发放 IoTDP
企业应用
域名注册服务 Domains
云解析服务 DNS
企业门户 EWP
ICP备案
商标注册
华为云WeLink
华为云会议 Meeting
隐私保护通话 PrivateNumber
语音通话 VoiceCall
消息&短信 MSGSMS
云管理网络
SD-WAN 云服务
边缘数据中心管理 EDCM
云桌面 Workspace
应用与数据集成平台 ROMA Connect
ROMA资产中心 ROMA Exchange
API全生命周期管理 ROMA API
政企自服务管理 ESM
视频
实时音视频 SparkRTC
视频直播 Live
视频点播 VOD
媒体处理 MPC
视频接入服务 VIS
数字内容生产线 MetaStudio
迁移
主机迁移服务 SMS
对象存储迁移服务 OMS
云数据迁移 CDM
迁移中心 MGC
专属云
专属计算集群 DCC
开发者工具
SDK开发指南
API签名指南
DevStar
华为云命令行工具服务 KooCLI
Huawei Cloud Toolkit
CodeArts API
云化转型
云架构中心
云采用框架
用户服务
账号中心
费用中心
成本中心
资源中心
企业管理
工单管理
客户运营能力
国际站常见问题
支持计划
专业服务
合作伙伴支持计划
我的凭证
华为云公共事业服务云平台
工业软件
工业数字模型驱动引擎
硬件开发工具链平台云服务
工业数据转换引擎云服务

CICD持续集成与交付

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

使用说明

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 开发者控制台
文档反馈

文档反馈

意见反馈

0/500

标记内容

同时提交标记内容