1 概述

1.1 背景介绍

DevOps 是一种结合开发(Development)和运维(Operations)的软件开发和运维实践,旨在通过自动化、协作和持续改进,缩短开发周期,提高交付效率和质量。

软件开发生产线(CodeArts)是华为云提供的一站式 DevOps 平台,即开即用,随时随地在云端交付软件全生命周期,覆盖需求下发、代码提交、代码检查、代码编译、验证、部署、发布,打通软件交付的完整路径,提供软件研发流程的端到端支持。CodeArts 作为华为云的 DevOps 平台,为企业提供了一套完整的工具链和实践方法,帮助企业快速实现 DevOps 落地,提升软件开发和运维的效率与质量。通过 CodeArts,企业可以构建自动化、协作化和持续改进的 DevOps 文化,适应快速变化的市场需求。

1.2 适用对象

  • 企业
  • 个人开发者
  • 高校学生

1.3 案例时间

本案例总时长预计60分钟。

1.4 案例流程

7fe45c6019f68afb61402020761566f5.png

说明:

① 登录开发者空间-云主机;
② 打开浏览器访问CodeArts,创建代码仓库、编译构建任务、部署任务和流水线;
③ CodeArts IDE本地拉取云上代码;
④ 修改代码后推送代码到云端仓库;
⑤ CodeArts IDE集成CodeArts Pipeline插件;
⑥ CodeArts IDE本地调用华为云云上流水线任务。

1.5 资源总览

本案例预计花费总计1.0638元。案例体验完成后,请及时释放资源,以免产生不必要的费用。

资源名称 规格 单价(元) 时长(分钟)
开发者空间-云主机 2vCPUs | 4GB X86 Ubuntu 22.04 Server定制版 免费 60
软件开发生产线 CodeArts 免费体验版 免费 60
虚拟私有云VPC 免费 60
弹性云服务器 ECS 通用计算增强型 | c6.large.4 | 2vCPUs | 8GiB 1.0638/小时 60

体验完整案例请点这里👉️👉️👉️云端DevOps:实现持续交付生产线

2 实践准备

2.1 前序步骤

本案例主要介绍如何将软件的源代码编译成目标文件并部署到服务器,请先参考 团队协作:从需求到代码实现指南 案例的2.1和2.3章节完成CodeArts的购买及项目创建。

2.2 创建虚拟私有云VPC和安全组

配置ECS网络需要创建虚拟私有云VPC和安全组。

进入创建虚拟私有云页面,自定义输入名称(如:vpc-codearts)和子网名称(如:subnet-codearts),单击立即创建,完成虚拟私有云创建。
2.2-1.png

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

2.2-2.png

2.3 购买弹性云服务器 ECS

本案例需要将应用部署至弹性云服务器ECS,所以需要购买一台ECS。

进入购买弹性云服务器,按照如下规格自定义购买ECS:

注:购买时的参数配置参考下表,表中未列出的配置项可保持默认。

配置分类 配置项 配置建议
基础配置 计费模式 按需计费。
CPU架构 x86计算。
规格 通用计算增强型 | c6.large.4 | 2vCPUs | 8GiB。
镜像 公共镜像 | CentOS | CentOS 7.6 64bit(10GiB)。
网络配置 虚拟私有云 步骤2.2中创建的vpc。
安全组 步骤2.2中创建的安全组。
弹性公网IP 现在购买。
公网带宽 按带宽计费 | 5Mbit/s。
高级配置 登录凭证 密码。
密码 自定义密码。

4565f9b48f1f64bc4041427a6afc8eb5.png

2bd4730905d62f71f2719a1abb6c7493.png

cf6abd1ebd768499d97473bd1f00717e.png

ae5af839be70ea5d058cafd0ecc2ad3b.png

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

90a26997fb7a4df46f23f20ad83b5d58.png

2.4 获取项目代码

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

d903866c251097d6b270a97f20af0ef8.png

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

b6dcba7e4c2e3eda1271a347b1b3f70b.png

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

e6425627280e1e1e36bf0f653b92d161.png

说明:用该代码仓库模板创建代码仓库的同时,会自动创建构建任务、部署任务和流水线。

基本信息页,自定义填写代码仓库名称(如:Java-Web-Demo),直接单击确定

8d6434703d81bed288f32d8795060749.png

创建完成,如下图所示:

697c10b523fa1bbf368fb3e969c060cd.png

3 构建应用

CodeArts编译构建服务提供简易配置的混合语言构建平台,支持一键创建、配置和执行任务,实现代码获取、构建、打包自动化。

本章节介绍如何在CodeArts编译构建服务中构建应用。

3.1 查看构建任务

进入创建的CodeArts项目,单击导航持续交付 > 编译构建,在任务列表中可以看到,伴随代码仓库创建已经创建了一个构建任务Java-Web-Demo-build,可以单击其操作列的8f2dce270332fd42279d8f31373d6ac6.png图标,在下拉菜单中选择编辑,进入该构建任务的编辑页面。

8811061975315ded228dcaf462fae4f8.png

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

75924681c9e040a4c7eeb06c82d126e5.png

4 部署应用

部署(CodeArts Deploy)提供可视化、一键式部署服务,支持部署到虚拟机或者容器,提供Tomcat、SpringBoot等模板或者自由组装编排原子步骤进行部署,支持并行部署和流水线无缝集成,实现部署环境标准化和部署过程自动化。

本章节创建一个将软件包部署到弹性云服务器的部署应用。

4.1 创建主机集群

进入创建的CodeArts项目,单击导航 设置 > 通用设置 > 基础资源管理,单击新建主机集群,设置集群名称(例:scrum-demo-group),单击保存

d554a7f856804d1326809ddbfc40d8d7.png

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

4e9668c5d6d88dc69ed92e8ea73df590.png

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

3fae9941b817102b4bd4769f49fdd731.png

4.2 编辑部署任务

单击导航 持续交付 > 部署, 在任务列表中可以看到,伴随代码仓库创建已经创建了一个部署任务Java-Web-Demo-deploy,可以单击其操作列的8f2dce270332fd42279d8f31373d6ac6.png图标,在下拉菜单中选择编辑,进入该部署任务的编辑页面。

89183b64b2851d5d5c477309e3528e20.png

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

8446e333376b93aeb2c86cde264de4f1.png

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

f81f8edf6266488d11dd4513fcbb998b.png

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

bfc399f1a77cc3dfb4a419a1e88b6cfa.png

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

5b9044315fde856b8fdf4299801d6bee.png

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

40631281b4658eacc78d91939eff6002.png

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

47b0d75e002e21d5d1e64addfebad2d9.png

5 云主机IDE管理流水线

流水线(CodeArts Pipeline)提供可视化、可编排的CI/CD持续交付软件生产线,帮助企业快速转型,实现DevOps持续交付高效自动化,缩短应用TTM(Time to Market)交付周期,提升研发效率。

流水线可在华为云上直接执行,在日常开发环境中,开发人员使用最多的是IDE,代码提交后想要第一时间确认自己新增的代码在云端环境中是否可正常构建及部署,需要登录CodeArts进行确认,会增添开发的复杂性。

本章节中介绍如何在IDE中直接调用云端流水线执行,并查看流水线是否执行成功。

5.1 编辑流水线

在创建的CodeArts项目中,单击导航 持续交付 > 流水线,在流水线列表中可以看到,伴随代码仓库创建已经创建了一个流水线Java-Web-Demo-pipeline,可以单击其操作列的8f2dce270332fd42279d8f31373d6ac6.png更多选项图标,在下拉菜单中选择编辑,进入该流水线的编辑页面。

8bf42c2fa4f8c143739b36d1246fe85d.png

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

3aa03b1a99f609af76cc842e1d76f4d4.png

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

ccb1e8084439e69932558018864fbcc2.png

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

c73def4732bdd0f4493d8f0aaf7202c1.png

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

655252943667cc4c89b2f3207bee3573.png

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

af4e0fd5be7cd14616b6c1c26cf6a696.png

5.2 CodeArts IDE本地代码拉取

在云主机桌面,双击打开CodeArts IDE for Java

ab1bd139827503162a9b7b626d5ef756.png

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

cb35a0b53c463294da1046d53142d8ba.png

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

ea30b90e35d8d2d746183e4168b23bd2.png

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

4ce85b7b7bde7fb70638fd03048db27e.png

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

d19a977138ba96c0379aaa9ff652ca5d.png

5.3 修改代码

本小节模拟开发人员开发代码并推送到云端仓库。

本案例应用访问使用80端口,首先在CodeArts IDE for Java中打开路径src/main/resources下的application.properties文件,将第28080端口修改为80端口。

b6dba48049b1468ffc7d26f95acf68a3.png

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

9712b68fbbac713a8c0c7bad3c2f6646.png

在CodeArts IDE for Java中打开终端,执行以下命令,设置你的git身份标识。

git config --global user.name "Your Name"
git config --global user.email "you@example.com"

说明:命令中的Your Name和you@example.com用自己的用户名和邮箱替换。

6f23462f63805ba284104a20b5afb673.png

单击左侧菜单栏的源代码管理,按如下操作提交和推送代码:

  • 保存更改到本地仓库:单击变化列表上的23b1e7e458eb6a36ff581e14744072c3.png号图标;
  • 提交代码:在提交信息中填写本次代码实现的功能(如:修改端口及打印信息),单击Commit
  • 推送代码:单击上方更多操作图标5178638c786bbb9e9042e06c743b766a.png,选择Pull,Push > Push

879dc37a1aa54445e645aa6df7c1a6c1.png

推送代码同样需要用户鉴权,输入克隆代码时使用的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插件。

5b9ac7390c5d7639a78eda5eabd031d8.png

在云主机的CodeArts IDE for Java中,单击右侧扩展菜单栏,选择fb3447665399cc65665757cedb4469af.png图标,打开上面CodeArts Pipeline插件下载地址并选中插件,单击安装

c06d403c7cc930136c7c5ad464bb6317.png

如遇正在安装非受信任的扩展提示,单击继续安装

安装完成,单击立即重载

41b7af387621a822338a9ceae5c8f92e.png

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

5a12bae2a917d7c77f5d7630d128c417.png

5.5 执行流水线

在云主机的CodeArts IDE for Java中,单击流水线的运行图标35de93aa6a1ec91b7a695d07be5e7d2d.png,启动流水线执行。

6cdc397db49defbca7a246477a152811.png

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

be8f09a3af61270ac216d6a0a33cfab9.png

待流水线执行完毕。

1c44946ac6827c2ce15e3bbf9b3f055c.png

用浏览器访问ECS弹性公网IP/test,出现如下图,表示应用部署成功。

说明:ECS弹性公网IP是步骤2.3中购买的ECS的弹性公网IP。

b3989e6a3a21efe98725951cd8478aa6.png

6 资源释放

为了避免不必要的费用产生,完成本样例项目体验后,可根据实际使用的需要,释放部分不再使用的资源。

可以释放的资源如下:

资源名称 操作步骤
CodeArts项目 进入项目的设置 > 通用设置 > 基本信息页面,单击删除项目,根据页面提示完成删除操作。
ECS 登录ECS控制台。在列表中找到待删除的ECS,单击更多 > 删除,根据页面提示完成删除操作。
VPC 登录子网列表页面,单击待删除子网的删除,根据页面提示完成删除操作。 登录VPC列表页面,单击待删除VPC的删除,根据页面提示完成删除操作。

至此,云端DevOps:实现持续交付生产线全部完成。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐