本文分享自华为云社区《【开发者空间实践】基于Repo和流水线门禁的分支合并与部署-云社区-华为云》
一、案例介绍
流水线(CodeArts Pipeline)提供可视化、可编排的CI/CD持续交付软件生产线,帮助企业快速转型,实现DevOps持续交付高效自动化,缩短应用TTM(Time to Market)交付周期,提升研发效率。
流水线本质上是一个可视化的自动化任务调度平台,需要配合软件开发生产线中编译构建、代码检查、测试计划、部署等服务的自动化任务使用。根据用户需要的场景,如开发测试环境应用部署、生产环境应用部署等,对这些自动化任务进行自定义编排,一次配置后就可以一键自动化触发调度执行,避免频繁低效的手工操作。
通过本次实验,可以学会通过CodeArts流水线来自定义编排云上任务,实现流水线门禁的分支合并与部署。
二、免费领取云主机
如您还没有云主机,可点击链接,根据领取指南进行操作。
如您已领取云主机,可直接开始实验。
三、实验流程

说明:
1、购买弹性云服务器,创建虚拟私有云及安全组;
2、登录云主机,购买CodeArts并创建CodeArts项目,创建代码质量门禁检查流水线;
3、CodeArts IDE本地拉取云上代码;
4、CodeArts IDE集成CodeArts Pipeline插件实现本地调用华为云云上流水线任务;
5、云上流水线查看运行结果;进行分支合并,创建部署流水线。
实验资源
本次实验花费总计为1.55元,资源采取按需计费,体验结束后,请及时释放资源,避免产生多余费用,给您带来不便。
|------------|-------------------------------------------------------------------------|-----------|---------------------|
| 资源名称 | 规格 | 单价(元) | 时长( h ) |
| 弹性云服务器ECS | X86计算,通用计算增强型 | c6.large.4 | 2 vCPUs | 8 GiB CentOS 7.6 64bit (40GB) | 0.75 | 1 |
| 弹性公网IP | 按流量计费 5Mbit/s | 0.8元/GB | 1 |
| CodeArts服务 | 免费体验版 | 免费 | 1 |
**四、**基于Repo和流水线门禁的分支合并与部署最佳实践
4.1 购买CodeArts
已购买请跳过。
在浏览器中输入华为云网址:https://www.huaweicloud.com/进入华为云首页。在华为云的首页右上方,点击"登录",在弹出的对话框中输入自己的用户名和密码。
在华为云首页,依次选择"产品">"开发与运维">"软件开发生产线CodeArts",进入CodeArts页面。

点击"购买"按钮进入购买页面,选择"体验版"购买即可。
4.2 创建CodeArts项目
4.2.1 创建云上项目
购买服务后,点击立即使用,进入CodeArts首页,左上角选择"华北-北京四",选择"Scrum"类型项目模板。

在打开的新建项目窗口,填写好项目名称(例:Scrum-demo),点击"确定"创建。
创建云上仓库,进入Scrum-demo项目,点击左侧"代码代码托管新建仓库"。

选择 "模板仓库 Java Maven Demo",点击"下一步"。

输入仓库名称,点击"确定"。

进入仓库,示例代码如下(如有自己的代码请参考"【开发者空间实践指导】软件开发生产线CodeArts初体验:一站式体验代码云上托管、构建、检查与修复-云社区-华为云"上传至仓库)。

4.2.2 CodeArts IDE本地代码拉取
复制云上代码仓库地址。

登录云主机,双击打开CodeArts IDE。

点击CodeArts IDE 右上角的头像,登录华为云账号。

登录完毕,选择"克隆git仓库", 输入云仓库地址,点击 "克隆"。

获取仓库的用户名和密码。


填写到Codearts IDE中。

云仓库与本地CodeArts IDE连接完毕。

4.3 创建代码质量门禁检查的流水线
4.3.1 创建检查任务
返回CodeArts项目,点击左侧"代码代码检查新建任务"。

修改任务名称,仓库选择为4.2.2创建的仓库,点击"新建任务"。

3.3.2 创建构建任务
点击左侧"持续交付编译构建新建任务"。

修改名称,点击"下一步"。

选择"Maven模板",点击"确定"。

点击右上方"保存"。
3.3.3 创建流水线
点击左侧"流水线新建流水线"。

修改流水线名称,点击"下一步"。

选择"空白模板"点击"确定"。

确定完成自动跳转流水线界面,点击"新建任务",右侧跳出弹窗,选择"构建Build构建",点击 "添加"。

调用的任务选择4.3.2创建的构建任务,仓库选择4.2.2创建的仓库,点击"确定"。

点击"并行任务",右侧跳出弹窗,选择"代码检查Check代码检查",点击"添加"。

同理选择4.3.1创建的检查任务,点击"确定"。

添加门禁:点击"准出条件",选择标准策略准出条件,点击"添加"。

选择"系统策略",点击"确定",门禁添加已完成。

点击右上方"保存并执行",弹出来界面点击"执行",等待执行结果。执行完毕,绿色为执行成功,红色为失败。

点击左侧"制品仓库软件发布库",可以找到jar包,复制下载地址备用。

4.4 CodeArts IDE本地管理CodeArts流水线
在CodeArts IDE中安装CodeArts Pipeline插件。

安装完成后,点击左侧的"DevSecOps"菜单栏(如没有请重启IDE),并切换自己项目所在的区域"北京四",查询当前项目下的所有流水线,选择4.3创建的代码质量门禁流水线,点击三角号运行。

绿色代表执行完毕,此时切到流水线界面可以查看刚刚执行的流水线。

4.5 合并分支
点击左侧"工作项需求管理迭代新建"。

选择 "task",设置名称(例:修改代码demo)。

点击左侧"代码托管",点击仓库,进入代码界面,点击"代码分支所有分支",可以看到只有一个主分支master,点击"新建分支"。

设置分支名称(例:feature),关联工作项,选择上面创建的迭代task。点击"确定"。

点击"代码master",下拉框选择刚刚创建的feature分支,模拟代码修改。

找到src下面的 "HelloWorld.Java"。点击编辑。

修改代码,点击"确定"。

点击右上角"新建合并请求",模拟分支合并,点击"下一步"。

选择标题,并关联工作项,点击"新建合并请求",点击"合入"。

合入完成后,点击代码,可以查看master代码已修改。

4.6 创建虚拟私有云和安全组
在华为云首页,依次选择"产品">"网络">"虚拟私有云VPC",进入服务页面,然后点击"开始使用"进入创建虚拟私有云页面。
在创建页面,"名称""子网名称"填入自己可以识别的名称,企业项目选择"default",点击"立即创建"完成虚拟私有云的创建。

4.7 购买弹性云服务器
浏览器登录华为云控制台,搜索ECS弹性云服务器,进入ECS界面,点击有上角购买弹性云服务器,ECS配置如下:
|---------|-----------------------------------------|
| 配置项 | 具体配置 |
| 计费模式: | 按需计费 |
| 区域/可用区 | 华北-北京四 | 随机分配 |
| 规格 | X86计算 | c6.large.4 | 2vCPUs | 8GiB |
| 操作系统镜像 | CentOS 7.6 64bit with ARM |
| 系统盘 | 通用型SSD, 40GiB |
| 弹性公网IP | 全动态BGP | 按流量计费 | 5 Mbit/s | 随实例释放 |
| 网络和安全组 | 选择第二步购买的虚拟私有云,安全组没有可新建,入方向网段开放22,8080端口 |
| 公网带宽 | 按流量计费 |
| 云服务器名称 | (自定义) |
| 登录凭证 | (自定义) |
| 购买量 | 1 |
购买弹性云服务器时,若无虚拟私有云VPC、安全组,需要新建;安全组也可以对全部开放22,8084端口(不建议,若通过云主机连接不到该服务器,可以尝试全开)。



点击"立即购买"完成购买,购买成功后可以看到服务器名称及公网ip等信息。

4.8 创建部署流水线
4.8.1 创建主机集群
进入CodeArts项目,点击"设置通用设置基础资源管理",点击"新建主机集群"设置集群名称(例:scrum-demo-group),点击"添加或导入主机",选择"通过ip手动添加",输入4.6创建的服务器名称,IP地址为公网地址,输入用户名密码,端口22。

点击"确定",等待一会可以看到导入成功。

4.8.2 创建部署任务
点击"部署新建应用",设置名称,点击"下一步",选择"Tomcat应用部署",点击"确定"。

点击"环境管理新建环境",自定义环境名称,点击"确定"。

点击"导入主机",选择4.7.1创建的主机集群,点击"保存",等待成功即可。

点击"参数设置",host_group默认值选择上一步新建环境名称,package_url为4.3.3的jar包地址,点击"保存"。

4.8.3 创建部署流水线
点击"流水线新建流水线",检查及构建步骤参照4.3,点击"新建阶段新建任务",选择Deploy部署,点击"添加",选择调度任务,host_group,关联构建任务,点击"确定"。

等待执行成功(也可以在本地IDE中查看运行该流水线,请参照4.4)。

至此本次实验全部内容完成。