用华为 CodeArts 搞 DevOps!团队协作搭流水线,端到端支持软件交付

1 概述
1.1 背景介绍
DevOps 是一种结合开发(Development)和运维(Operations)的软件开发和运维实践,旨在通过自动化、协作和持续改进,缩短开发周期,提高交付效率和质量。
软件开发生产线(CodeArts)是华为云提供的一站式 DevOps 平台,即开即用,随时随地在云端交付软件全生命周期,覆盖需求下发、代码提交、代码检查、代码编译、验证、部署、发布,打通软件交付的完整路径,提供软件研发流程的端到端支持。CodeArts 作为华为云的 DevOps 平台,为企业提供了一套完整的工具链和实践方法,帮助企业快速实现 DevOps 落地,提升软件开发和运维的效率与质量。通过 CodeArts,企业可以构建自动化、协作化和持续改进的 DevOps 文化,适应快速变化的市场需求。
1.2 适用对象
企业
个人开发者
高校学生
1.3 案例时间
本案例总时长预计 60 分钟。
1.4 案例流程

说明:
① 登录开发者空间-云主机;② 打开浏览器访问 CodeArts,创建代码仓库、编译构建任务、部署任务和流水线;③ CodeArts IDE 本地拉取云上代码;④ 修改代码后推送代码到云端仓库;⑤ CodeArts IDE 集成 CodeArts Pipeline 插件;⑥ CodeArts IDE 本地调用华为云云上流水线任务。
1.5 资源总览
本案例预计花费总计 1.0638 元。案例体验完成后,请及时释放资源,以免产生不必要的费用。
体验完整案例请点这里👉️👉️👉️云端DevOps:实现持续交付生产线
2 实践准备
2.1 前序步骤
本案例主要介绍如何将软件的源代码编译成目标文件并部署到服务器,请先参考 团队协作:从需求到代码实现指南 案例的 2.1 和 2.3 章节完成 CodeArts 的购买及项目创建。
2.2 创建虚拟私有云 VPC 和安全组
配置 ECS 网络需要创建虚拟私有云VPC和安全组。
进入创建虚拟私有云页面,自定义输入名称(如:vpc-codearts)和子网名称(如:subnet-codearts),单击立即创建,完成虚拟私有云创建。

进入创建安全组页面,自定义输入名称(如:sg-codearts),预置规则选择通用 web 服务器,单击立即创建,完成安全组创建。

2.3 购买弹性云服务器 ECS
本案例需要将应用部署至弹性云服务器ECS,所以需要购买一台 ECS。
进入购买弹性云服务器,按照如下规格自定义购买 ECS:
注:购买时的参数配置参考下表,表中未列出的配置项可保持默认。




购买完成后返回弹性云服务器列表,在这里可以获取购买 ECS 的弹性公网 IP。

2.4 获取项目代码
进入创建的 CodeArts 项目,单击导航代码 > 代码托管 > 新建仓库。

新建方式选择按模板新建,单击下一步。

使用 Java Web Demo 搜索模板,选择 Java Web Demo,单击下一步。

说明:用该代码仓库模板创建代码仓库的同时,会自动创建构建任务、部署任务和流水线。
在基本信息页,自定义填写代码仓库名称(如:Java-Web-Demo),直接单击确定。

创建完成,如下图所示:

3 构建应用
CodeArts编译构建服务提供简易配置的混合语言构建平台,支持一键创建、配置和执行任务,实现代码获取、构建、打包自动化。
本章节介绍如何在 CodeArts 编译构建服务中构建应用。
3.1 查看构建任务
进入创建的 CodeArts 项目,单击导航持续交付 > 编译构建,在任务列表中可以看到,伴随代码仓库创建已经创建了一个构建任务 Java-Web-Demo-build,可以单击其操作列的

图标,在下拉菜单中选择编辑,进入该构建任务的编辑页面。

在构建任务编辑页,可以看到构建任务中的详细构建步骤,本案例中直接使用这些步骤,无需修改,直接单击取消,退出编辑。

4 部署应用
部署(CodeArts Deploy)提供可视化、一键式部署服务,支持部署到虚拟机或者容器,提供 Tomcat、SpringBoot 等模板或者自由组装编排原子步骤进行部署,支持并行部署和流水线无缝集成,实现部署环境标准化和部署过程自动化。
本章节创建一个将软件包部署到弹性云服务器的部署应用。
4.1 创建主机集群
进入创建的 CodeArts 项目,单击导航 设置 > 通用设置 > 基础资源管理,单击新建主机集群,设置集群名称(例:scrum-demo-group),单击保存。

单击添加或导入主机,选择通过 IP 手动添加,自定义输入主机名,IP 地址填写步骤 2.3 中购买的 ECS 的公网地址,用户名填写 root,密码填写 2.3 中购买的 ECS 的登录密码,ssh 端口填写 22。

单击确定,等待一会可以看到主机导入成功。

4.2 编辑部署任务
单击导航 持续交付 > 部署, 在任务列表中可以看到,伴随代码仓库创建已经创建了一个部署任务 Java-Web-Demo-deploy,可以单击其操作列的

图标,在下拉菜单中选择编辑,进入该部署任务的编辑页面。

切换到环境管理页签,单击新建环境,填写环境名称(如:scrum-demo-env),单击保存。

单击导入主机,选择步骤 4.1 中创建的主机集群,勾选集群下的主机,单击导入,等待成功即可。

切换到参数设置页签,host_group 的默认值选择上一步新建环境名称,删除 package_url 参数,service_port 的值设置为 80,package_name 的值设置为 demoapp,关闭所参数的运行时设置。

切换到部署步骤页签,选中选择部署来源步骤,选择源类型修改为构建任务,构建任务选择步骤 3.1 中的构建任务,下载到主机的部署目录输入:/usr/local/${package_name}/。

由于首次部署不需停止 SpringBoot 服务,URL 健康测试步骤由于部署的时延性,容易失败,所以本案例中先禁用这两个步骤。

完成以上操作,单击右上角保存按钮,完成部署任务的编辑。

5 云主机 IDE 管理流水线
流水线(CodeArts Pipeline)提供可视化、可编排的 CI/CD 持续交付软件生产线,帮助企业快速转型,实现 DevOps 持续交付高效自动化,缩短应用 TTM(Time to Market)交付周期,提升研发效率。
流水线可在华为云上直接执行,在日常开发环境中,开发人员使用最多的是 IDE,代码提交后想要第一时间确认自己新增的代码在云端环境中是否可正常构建及部署,需要登录 CodeArts 进行确认,会增添开发的复杂性。
本章节中介绍如何在 IDE 中直接调用云端流水线执行,并查看流水线是否执行成功。
5.1 编辑流水线
在创建的 CodeArts 项目中,单击导航 持续交付 > 流水线,在流水线列表中可以看到,伴随代码仓库创建已经创建了一个流水线 Java-Web-Demo-pipeline,可以单击其操作列的

更多选项图标,在下拉菜单中选择编辑,进入该流水线的编辑页面。

本案例中不涉及代码检查和测试,先将这两个任务从流水线中删除。

编辑构建和检查、部署和测试两个阶段,阶段名称分别修改为构建和部署。

单击构建任务,可以看到该任务已经关联了本项目的构建任务和代码仓库,单击确定。

单击部署任务,可以看到该任务已经关联了本项目的部署任务,关联构建任务选择构建,由于我们在步骤 4.2 中编辑了部署任务,需要单击确定按钮才能生效。

完成以上配置后单击右上角保存按钮,完成流水线的编辑。

5.2 CodeArts IDE 本地代码拉取
在云主机桌面,双击打开 CodeArts IDE for Java。

选择克隆 Git 仓库, 输入云端代码仓库 HTTPS 地址(获取方式见下图),单击克隆。

克隆代码需要用户鉴权,在提示 Username 和 Password 处,填写云端仓库 HTTPS 用户名和密码(获取方式见上图中 HTTPS 密码),单击回车键。

在弹出提示框是否要打开已克隆仓库,单击 Open,打开仓库。

等待代码加载完毕(如提示同步失败,无需处理,继续等待即可),云仓库与本地 CodeArts IDE for Java 连接完成。

5.3 修改代码
本小节模拟开发人员开发代码并推送到云端仓库。
本案例应用访问使用 80 端口,首先在 CodeArts IDE for Java 中打开路径 src/main/resources 下的 application.properties 文件,将第 2 行 8080 端口修改为 80 端口。

打开路径 src/main/java/com/huawei/codearts/controller/下的 TestController.java 文件,将第 13 行打印内容 hello world 修改为自定义内容(如:hello 华为开发者空间)。

在 CodeArts IDE for Java 中打开终端,执行以下命令,设置你的 git 身份标识。
说明:命令中的 Your Name 和you@example.com用自己的用户名和邮箱替换。

单击左侧菜单栏的源代码管理,按如下操作提交和推送代码:
保存更改到本地仓库:单击变化列表上的
号图标;
提交代码:在提交信息中填写本次代码实现的功能(如:修改端口及打印信息),单击 Commit;
推送代码:单击上方更多操作图标
,选择 Pull,Push > Push。

推送代码同样需要用户鉴权,输入克隆代码时使用的 HTTPS 用户名和密码,并单击回车键。
5.4 安装 CodeArts Pipeline 插件
在云主机桌面,单击左下角浏览器图标,用浏览器打开https://dtse-mirrors.obs.cn-north-4.myhuaweicloud.com/case/0032/huaweicloud.codearts-pipeline-1.0.0.carts,下载 CodeArts Pipeline 插件。

在云主机的 CodeArts IDE for Java 中,单击右侧扩展菜单栏,选择

图标,打开上面 CodeArts Pipeline 插件下载地址并选中插件,单击安装。

如遇正在安装非受信任的扩展提示,单击继续安装。
安装完成,单击立即重载。

安装完成后,单击左侧的 DevSecOps 菜单栏(如没有请重启 IDE),并切换到自己项目所在的区域北京四,查询当前项目下的所有流水线,可以看到步骤 5.1 编辑的流水线。

5.5 执行流水线
在云主机的 CodeArts IDE for Java 中,单击流水线的运行图标

,启动流水线执行。

可以展开流水线详情查看执行进度及手动刷新状态。

待流水线执行完毕。

用浏览器访问 ECS 弹性公网 IP/test,出现如下图,表示应用部署成功。
说明:ECS 弹性公网 IP 是步骤 2.3 中购买的 ECS 的弹性公网 IP。

6 资源释放
为了避免不必要的费用产生,完成本样例项目体验后,可根据实际使用的需要,释放部分不再使用的资源。
可以释放的资源如下:
至此,云端 DevOps:实现持续交付生产线全部完成。
评论