华为云CodeArts软件开发生产线对接与使用完全指南
1. CodeArts概述
软件开发生产线(CodeArts)是华为云面向开发者提供的一站式云端平台,即开即用,支持随时随地在云端交付软件全生命周期。CodeArts覆盖了从需求下发、代码提交、代码检查、代码编译、验证、部署到发布的完整路径,打通了软件交付的端到端流程。
CodeArts由多个核心服务构成,每个服务聚焦于软件交付生命周期的特定环节:
- 需求管理:为敏捷开发团队提供多项目管理、敏捷迭代、看板协作、需求管理、缺陷跟踪、文档管理、Wiki在线协作、仪表盘自定制报表等功能。
- 代码托管(CodeArts Repo):基于Git提供分布式代码管理和协同开发能力,包括成员管理、权限控制、代码托管、代码检查、代码审核、代码追溯、持续集成等功能。
- 流水线(CodeArts Pipeline):提供可视化、可定制的持续交付流水线服务,实现缩短交付周期和提升交付质量的效果。
- 代码检查(CodeArts Check):基于云端实现代码质量管理的服务,支持多语言的代码静态检查和安全检查,提供全面的质量报告和缺陷分组查看与改进建议。
- 编译构建(CodeArts Build):基于云端大规模并发加速,提供高速、低成本、配置简单的混合语言构建能力。
- 部署(CodeArts Deploy):支持主机、容器等多种部署形态,部署能力覆盖Tomcat、Springboot等多种语言和技术栈。
- 测试计划(CodeArts TestPlan):覆盖测试计划、测试设计、测试用例、测试执行和测试评估等全流程。
- 制品仓库(CodeArts Artifact):用于管理源代码编译后的构建产物,支持Maven、Npm等常见制品包类型,支持制品包版本管理和细粒度权限控制。
在CodeArts中,项目是使用各服务的基础。用户可以在CodeArts中完成需求管理、代码管理、代码检查、编译构建、制品管理、部署、测试等一系列操作。
需要先登录华为云控制台,点击:华为云控制台,还没有账号,点击:注册并关联,已有账号点击:登录后关联
2. 开通CodeArts服务
使用CodeArts前需要先开通服务。CodeArts支持包年/包月计费,也提供体验版供用户免费试用。
2.1 开通体验版
进入购买CodeArts套餐页面,选择体验版,勾选同意声明后单击立即开通。开通成功后,在软件开发生产线页面中会显示已开通的套餐记录。
2.2 准备工作
在使用CodeArts搭建流水线之前,需要完成以下准备工作:
- 注册华为账号并开通华为云,完成实名认证
- 为账户充值(按需计费模式下需要账户中有余额)
- 购买一台弹性云服务器(ECS)用于部署应用。建议配置:2vCPUs | 4GiB或以上规格,系统盘≥80GiB,操作系统选择CentOS 7.6
- 配置安全组规则,开放必要的端口,如TCP 22(SSH)和TCP 8080(应用访问)
3. 创建CodeArts项目
项目是使用CodeArts各服务的基础,创建项目后才能完成后续的代码托管、编译构建、部署等操作。
3.1 新建项目
登录华为云控制台后,在服务列表中选择开发与运维 > 软件开发生产线 CodeArts,单击立即使用进入CodeArts服务首页。在CodeArts首页单击新建项目,选择Scrum项目模板,输入项目名称后单击确定完成创建。
3.2 项目成员管理
项目创建后,可以通过项目设置添加团队成员,并为不同成员分配不同的角色和权限。CodeArts支持项目级别的权限控制,可以精细化管理每个成员对各个服务的访问和操作权限。
4. 代码托管(CodeArts Repo)对接与使用
代码托管(CodeArts Repo)是基于Git的分布式代码管理和协同开发服务。代码托管的所有操作都需要在项目下进行。
4.1 新建代码仓库
在项目中单击导航栏代码 > 代码托管,进入代码托管服务。单击新建仓库,进入新建仓库页面。CodeArts支持多种方式创建仓库:
- 按模板新建:选择系统内置的模板(如Java Web Demo、Java Maven Demo等),快速创建包含示例代码的仓库
- 导入外部仓库:从GitHub、GitLab等外部代码托管平台导入已有仓库
- 空仓库新建:创建一个空的Git仓库,后续通过Git命令推送代码
选择模板后,输入代码仓库名称,单击确定完成创建。代码仓库名称需以大小写字母、数字、下划线开头,可包含大小写字母、数字、中划线、下划线、英文句点,但不能以.git、.atom或.结尾。
4.2 克隆代码仓库到本地
仓库创建成功后,开发者可以通过SSH密钥或者HTTPS协议把代码仓克隆到本地进行代码开发。克隆命令示例:
git clone https://codehub.devcloud.huaweicloud.com/your-repo-url.git4.3 代码提交与推送
开发者在本地完成代码开发后,可以通过Git命令将代码提交并推送到CodeArts Repo:
git add .
git commit -m "feat: 添加新功能"
git push origin masterCodeArts Repo也支持在Web界面进行在线代码编辑和提交。
4.4 分支管理与合并请求
CodeArts Repo支持完整的分支管理功能,开发者可以创建特性分支进行开发,然后通过合并请求(Merge Request)将代码合并到主分支。合并请求支持代码评审、讨论和CI检查,确保代码质量。
5. 编译构建(CodeArts Build)对接与使用
编译构建(CodeArts Build)基于云端大规模并发加速,提供高速、低成本、配置简单的混合语言构建能力。
5.1 新建编译构建任务
在项目中单击导航栏持续交付 > 编译构建,进入编译构建页面。单击新建任务,进入新建构建任务页面。配置构建任务的基本信息:
- 任务名称:填写构建任务的名称
- 代码源:选择Repo(CodeArts代码托管)
- 代码仓:选择已创建的代码仓库
- 默认分支:选择要构建的分支(如master)
单击下一步,选择构建模板。CodeArts提供了多种系统模板,如Maven、Gradle、Npm、Docker等,也可以选择空模板自定义构建步骤。
5.2 配置构建步骤
选择模板后,进入构建步骤配置页面。以Maven构建为例,典型的构建步骤包括:
- Maven构建:执行mvn clean package命令编译打包
- 上传软件包到软件发布库:将构建生成的jar/war包上传到制品仓库
构建步骤的配置可以通过图形化界面进行,也支持通过YAML文件定义构建流程。
5.3 自定义构建环境
当CodeArts Build默认构建环境无法满足需求时(例如需要使用Java 21而非默认的Java 1.8,或者需要使用企业专有工具),可以通过自定义构建环境来解决。
自定义构建环境的基本思路是制作一个包含所需工具链的Docker镜像,推送到华为云容器镜像服务(SWR),然后在构建任务中指定使用该自定义镜像作为构建环境。Dockerfile示例:
# 使用官方的ubuntu作为基础镜像
FROM ubuntu:latest
# 安装wget工具
RUN apt-get update && apt-get install -y wget
# 安装JDK 17
RUN mkdir /usr/local/jdk \
&& wget "https://download.oracle.com/java/17/archive/jdk-17.0.12_linux-x64_bin.tar.gz" -P /tmp/jdk \
&& tar -zxf /tmp/jdk/jdk-17.0.12_linux-x64_bin.tar.gz -C /usr/local/jdk --strip-components 1 \
&& rm -rf /tmp/jdk/jdk-17.0.12_linux-x64_bin.tar.gz
# 安装Maven 3.9.8
RUN mkdir /usr/local/maven \
&& wget "https://dlcdn.apache.org/maven/maven-3/3.9.8/binaries/apache-maven-3.9.8-bin.tar.gz" -P /tmp/maven \
&& tar -zxf /tmp/maven/apache-maven-3.9.8-bin.tar.gz -C /usr/local/maven --strip-components 1 \
&& rm -rf /tmp/maven/apache-maven-3.9.8-bin.tar.gz
# 设置环境变量
ENV JAVA_HOME=/usr/local/jdk
ENV MAVEN_HOME=/usr/local/maven
ENV PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin5.4 执行构建任务
配置完成后,可以手动执行构建任务,也可以配置为在代码推送时自动触发构建。构建执行过程中可以实时查看构建日志,构建完成后会在制品仓库中生成构建产物。
6. 部署服务(CodeArts Deploy)对接与使用
部署服务(CodeArts Deploy)支持主机、容器等多种部署形态,部署能力覆盖Tomcat、Springboot等多种语言和技术栈。
6.1 新建部署应用
在项目中单击导航栏持续交付 > 部署,进入部署服务页面。单击新建应用,选择部署模板或创建空白应用。
6.2 配置部署步骤
部署应用由一系列部署步骤组成,常见的部署步骤包括:
- 安装JDK:在目标主机上安装Java运行环境
- 停止服务:停止正在运行的应用服务
- 下载软件包:从制品仓库下载构建产物
- 解压软件包:解压部署包到指定目录
- 启动服务:启动应用服务
每个部署步骤都可以通过图形化界面进行配置,支持设置执行条件、超时时间等参数。
6.3 配置部署主机
部署到ECS主机时,需要配置主机信息:
- 主机IP地址(弹性公网IP)
- SSH端口(默认22)
- 认证方式(密码或密钥)
- 操作系统类型
配置完成后,部署服务会通过SSH连接到目标主机执行部署命令。
7. 流水线(CodeArts Pipeline)对接与使用
流水线服务本质上是一个可视化的自动化任务调度平台,需要配合软件开发生产线中编译构建、代码检查、测试计划、部署等服务的自动化任务使用。通过流水线可以将代码检查、编译构建、部署等任务串联起来,当代码发生改变时自动触发流水线执行,实现持续交付。
7.1 新建流水线
进入流水线服务首页,单击新建流水线,进入基本信息页面。配置流水线的基本信息:
- 流水线名称:填写流水线的名称
- 所属项目:选择流水线所属的项目
- 代码源:选择代码仓库和分支
可以选择系统模板或自定义模板快速新建流水线,模板中预置了常用的任务编排。
7.2 编排流水线任务
流水线由多个阶段(Stage)组成,每个阶段包含一个或多个任务(Task)。典型的流水线编排:
- 阶段一:代码检查 - 执行代码检查任务,确保代码质量
- 阶段二:编译构建 - 执行编译构建任务,生成软件包
- 阶段三:部署 - 执行部署任务,将软件包部署到目标环境
在流水线编辑页面,单击阶段下的新建任务,可以选择从空任务新建或从模板新建。每个任务都可以设置执行条件,例如只有前序任务成功时才执行。
7.3 流水线参数传递
流水线支持参数传递,可以将流水线级别的参数传递给构建任务和部署任务,实现任务间数据流动的统一。
以版本号参数为例:
- 在流水线中新增版本号参数(如releaseversion),并设置为运行时输入
- 在编译构建任务的参数设置中引用流水线的版本号参数
- 在部署任务的软件包参数中引用流水线的版本号参数
这样只需要在流水线触发时输入一次版本号,构建和部署任务就能自动使用相同的版本号,避免了手动配置可能导致的版本不一致问题。
7.4 自动触发流水线
流水线可以配置为在代码发生变更时自动触发。配置方法是在流水线的代码源配置中启用自动触发选项。当代码推送到指定分支时,流水线会自动执行,实现持续交付的自动化。
7.5 YAML化流水线
除了图形化编排,CodeArts Pipeline还支持通过YAML文件定义流水线。YAML化流水线可以将流水线配置作为代码进行版本管理,便于团队协作和配置复用。以下是一个YAML流水线示例:
version: 2.0
stages:
- name: 代码检查
jobs:
- name: check_job
type: codecheck
params:
task_name: CheckTask01
- name: 编译构建
jobs:
- name: build_job
type: build
params:
task_name: BuildTask01
- name: 部署
jobs:
- name: deploy_job
type: deploy
params:
app_name: DeployApp018. 服务扩展点对接第三方工具
服务扩展点是CodeArts的一种扩展插件,为CodeArts提供连接第三方服务的能力。当CodeArts中的任务需要连接到远程第三方服务进行数据获取或操作时,可以通过新建扩展点来实现与相应服务的连接。
8.1 支持的扩展点类型
CodeArts支持多种类型的服务扩展点:
- Docker repository:连接第三方Docker镜像仓库,部署服务可以获取仓库中的Docker镜像
- Jenkins:连接第三方Jenkins服务,在流水线中调用并执行Jenkins任务
- Kubernetes:连接Kubernetes集群,对集群下发部署任务
- nexus repository:连接第三方私有Maven仓库,构建任务可以获取仓库中的文件信息
- 通用Git:连接第三方Git仓库,在流水线、构建等服务中获取仓库的分支等信息
- GitHub:连接GitHub账号,在流水线、构建等服务中获取仓库、分支等信息
- IAM账户:委托自己账号的AK/SK给需要执行任务的账号
- CodeArts Repo HTTPS:授权CodeArts服务对托管的Repo仓库进行操作
- GitLab:连接GitLab仓库
- Bitbucket:连接Bitbucket账号
8.2 新建服务扩展点
新建服务扩展点的操作步骤如下:
- 进入CodeArts首页,单击目标项目名称进入项目
- 在导航中依次选择设置 > 通用设置 > 服务扩展点管理
- 单击新建服务扩展点,在弹框中选择类型
- 完成扩展点信息的配置(如仓库地址、用户名、密码等)
不同类型的扩展点需要配置不同的参数。例如Docker repository扩展点需要配置仓库地址、用户名和密码;Jenkins扩展点需要配置Jenkins服务地址和认证信息。
8.3 在流水线中使用扩展点
扩展点创建成功后,可以在流水线的任务配置中选择使用。例如在编译构建任务中,可以选择通过nexus repository扩展点从私有Maven仓库下载依赖;在部署任务中,可以选择通过Docker repository扩展点从第三方Docker仓库拉取镜像。
9. 代码检查(CodeArts Check)对接与使用
代码检查(CodeArts Check)是基于云端实现代码质量管理的服务,支持多语言的代码静态检查和安全检查。
9.1 代码检查任务
在新建代码仓库时,如果勾选自动创建代码检查任务(免费)选项,系统会自动创建一个与代码仓库同名的代码检查任务。也可以手动创建代码检查任务。
9.2 执行代码检查
进入代码检查服务,选择要执行的任务,单击开始检查启动任务。检查完成后会生成详细的质量报告,包括:
- 代码缺陷统计和分类
- 安全漏洞扫描结果
- 代码规范符合度
- 重复代码检测
开发人员可以根据检查报告中的缺陷分组查看和改进建议,有效管控代码质量。
9.3 配置检查规则集
代码检查支持自定义规则集,可以根据项目需求启用或禁用特定的检查规则。例如可以保留JAVASCRIPT和JAVA规则,关闭其他语言的检查。
10. 测试计划(CodeArts TestPlan)对接与使用
测试计划(CodeArts TestPlan)覆盖测试计划、测试设计、测试用例、测试执行和测试评估等全流程。测试计划服务的使用需要基于在需求管理服务中创建的项目。
10.1 创建测试计划
登录CodeArts进入目标项目,在导航中选择测试 > 测试计划。单击新建计划,配置测试计划信息。
10.2 测试用例管理
测试计划中可以创建和管理测试用例,支持手动测试用例和自动化测试用例。测试用例可以与需求关联,确保测试覆盖了所有需求。
11. 制品仓库(CodeArts Artifact)对接与使用
制品仓库(CodeArts Artifact)用于管理源代码编译后的构建产物,支持Maven、Npm等常见制品包类型。
11.1 软件发布库
编译构建任务执行完成后,构建产物会自动上传到软件发布库。软件发布库支持制品包的版本管理和细粒度权限控制。
11.2 私有依赖库
CodeArts Artifact还提供私有依赖库功能,用于管理项目内部的依赖包。构建任务可以从私有依赖库中获取依赖,也可以将构建产物发布到私有依赖库中供其他项目使用。
12. 权限管理与安全
12.1 IAM用户权限
CodeArts支持通过IAM(统一身份认证)进行用户权限管理。如果由IAM用户购买CodeArts,该IAM用户需要拥有BSS Administrator、BSS Finance、BSS Operator三种权限中的一种。
CodeArts Administrator和CodeArts Administrator角色的用户默认能够创建项目。
12.2 项目级权限
在项目级别,可以为不同角色配置不同的权限。CodeArts Build提供了任务级别的权限管理,用户可以在新建和修改构建任务时进入权限管理页签,对单个构建任务进行角色权限配置。
CodeArts Repo涉及项目级、代码组和仓库级权限,可以根据企业角色灵活配置。
13. 最佳实践与成本优化
13.1 典型CI/CD流程
使用CodeArts搭建CI/CD流水线的典型流程如下:
- 准备工作:注册华为账号、实名认证、充值、购买ECS
- 开通CodeArts体验版
- 新建CodeArts项目
- 新建代码仓库(使用模板或导入已有代码)
- 配置代码检查任务
- 配置编译构建任务
- 配置部署应用
- 编排流水线,将代码检查、构建、部署串联
- 配置自动触发,实现代码变更自动交付
13.2 容器化部署场景
对于容器化部署场景,可以使用CodeArts快速搭建基于CCE(云容器引擎)部署的代码开发流水线。与ECS部署相比,CCE部署更适合微服务架构和容器化应用。
13.3 成本控制
CodeArts支持按需计费,按需计费的资源会产生持续计费。完成体验后,可以释放不再使用的资源以避免不必要的费用产生。
14. 常见问题解答
Q1:CodeArts体验版有哪些功能限制?
A:CodeArts体验版适合个人开发者和小型团队试用,包含了CodeArts的核心功能,但在并发任务数、存储空间等方面有一定限制。具体限制可以在购买页面查看详细说明。
Q2:如何实现代码提交后自动触发流水线?
A:在流水线的代码源配置中启用自动触发选项即可。当代码推送到配置的分支时,流水线会自动执行。也可以在流水线的任务编排中设置定时触发或手动触发。
Q3:CodeArts支持哪些编程语言和框架?
A:CodeArts的编译构建服务支持Java、C/C++、Python、Node.js、Go、.NET等多种语言。部署服务支持Tomcat、Springboot、Nginx等多种技术栈。代码检查支持Java、JavaScript、Python、C/C++等多种语言的静态检查。
Q4:如何将已有的GitHub仓库迁移到CodeArts Repo?
A:可以通过两种方式迁移:一是在新建仓库时选择导入外部仓库,输入GitHub仓库地址进行导入;二是先在CodeArts Repo创建空仓库,然后在本地将GitHub仓库的代码推送到CodeArts Repo的远程地址。
Q5:服务扩展点配置后无法连接第三方服务怎么办?
A:首先检查第三方服务是否能通过公网环境无限制地访问。其次确认扩展点的配置信息(如地址、用户名、密码、Token等)是否正确。还可以查看CodeArts的任务日志,获取更详细的错误信息进行排查。
Q6:CodeArts如何与Jenkins集成?
A:通过新建Jenkins类型的服务扩展点,配置Jenkins服务地址和认证信息。扩展点创建成功后,可以在流水线中添加调用Jenkins任务,实现CodeArts流水线与Jenkins的集成。


