利用华为CodeArts持续交付项目演示流程

软件开发生产线(CodeArts)是面向开发者提供的一站式云端平台,即开即用,随时随地在云端交付软件全生命周期,覆盖需求下发、代码提交、代码检查、代码编译、验证、部署、发布,打通软件交付的完整路径,提供软件研发流程的端到端支持。

作为演示,本文以开源项目若依(https://gitee.com/y_project/RuoYi)为例,简要记录将该项目在华为CodeArts上编译构建和部署的基本流程。

一、购买CodeArts套餐

在华为云官方网站( 软件开发生产线CodeArts_DevOps_开发者平台-华为云 )可选购符合需求的规格CodeArts套餐。也可以先使用一个月的体验版,以下以体验版为例。

二、创建项目

在CodeArts控制台,点击左侧的“需求管理”,在打开的页面中,点击右上角的“立即使用”,打开如下图所示的项目管理页面。

点击“新建项目”,在打开的选择模板页面中,选择以“DevOps全流程示例项目”模板新建一个项目。

输入项目名称。

项目创建完成后,系统会弹出利用华为CodeArts进行端到端DevOps(HE2E)的流程及教程,点击其中链接可进行学习和练习。

三、导入代码

1、新建仓库
在CodeArts项目控制台,点击代码-->代码托管。


打开如下图所示页面,并点击新建仓库。

2、导入仓库

选择导入开源仓库,也可直接新建空的项目并将自己本地的代码导入到该仓库。

这里以导入外部开源仓库为例。

在如下所示页面中,填写外部仓库的路径和访问账户信息。

示例项目若依的gitee访问链接为https://gitee.com/y_project/RuoYi,访问后点击“克隆/下载”,在如下所示页面中可获得该仓库的访问路径。因该项目为开源仓库,克隆该项目代码不需要用户名和密码。

单击“下一步”,填写仓库名称,其它按默认设置,或者按自己的需求设置即可。最后单击“确定”开始克隆项目代码。

完成后,打开新建的仓库,可以看到导入的项目文件,如下图所示。

3、代码检查

代码检查功能可以对代码进行静态检查,包括是否有简单编码问题,圈复杂度等。每个问题会有对应的级别,发布级代码,不允许存在任何静态检查问题。

在CodeArts项目控制台,点击代码检查-->新建任务

在如下所示的新建任务页面,选择刚刚新建的仓库,然后单击下方的“新建任务”按钮。

在任务页面,可以点击“开始检查”手动运行代码检查,也可以设置质量门禁,还可以设置执行计划定时自动运行代码检查任务。

检查完成后,会给出检查报告,如下所示

若检查不通过,可在“代码问题”中查看详情报告。

四、创建编译构建

这步是从刚才创建的仓库中拉取代码,然后执行构建命令,输出则是一个可执行的包。构建一般有使用spring-boot-maven-plugin和maven-assembly-plugin两种方式。

使用spring-boot-maven-plugin方式打包时会将该项目中所有依赖的包(包括静态文件)统一打包至一个jar中,执行的时候直接执行 java -jar {jarname}.jar,这种最简单,但是打出来的包会比较大
且无法修改配置。

使用 maven-assembly-plugin方式一般打包完成后,会有一个完整的项目结构,里面通常包含有以下内容以及其它各种需求的脚本:

  • bin: 放项目脚本,包括打包部署等
  • conf:存放配置文件
  • docs:说明文档
  • lib:依赖的jar包

企业一般采用maven-assembly-plugin方式。

本文档采用较简单的spring-boot-maven-plugin方式。

1、新建编译构建任务

在CodeArts项目控制台,依次点击左侧的持续交付-->编译构建

然后新建一个构建任务,在如下图所示任务基本信息中,填写任务名称,选择归属项目和前面创建的仓库,然后进入下一步。

选择用Maven模板进行构建。

在构建步骤中,选择构环境主机类型,这里选择x86服务器。

在构建步骤中,按需求选择工具版本、编辑打包命令以及其它参数配置。本示例中工具版本和命令按默认配置即可,并在最后将缓存配置设置为不使用缓存,否则可能会出现下载的jar包不完整。

在上传软件包到软件发布库中,确认构建包路径,这里直接采用默认即可。

2、执行编译构建任务

完成上述工作后,直接单击左上角的“新建并执行构建”按钮,开始自动编译构建,如下图所示

3、查看输出

成功编译构建后,依次单击“制品仓库”-->”软件发布库“可以查看到生成的jar包,如下所示。

五、购买云服务器

下面以在华为云上购买弹性云服务器为例。

1、购买弹性云服务器

访问华为云官网(https://www.huaweicloud.com/product/ecs.html),购买一台弹性云服务器ECS。这里过程从略,只作基本要求说明如下:

  • 弹性云服务器ECS的最低配置:1vCPU、1GB内存,40GB系统盘、CentOS7.9、1一个EIP
  • 安全组放开80端口

在下图所示的一台ECS中,标识1为ECS的主机名和主机ID,2为其弹性IP(EIP),记录好其中的主机名或主机ID,弹性IP地址,后面需要用到。

2、设置安全组

在”云服务器控制台“,点击”网络与安全“下的安全组,可看到一个默认的名为default的安全组。

点击default安全组右侧的”配置规则“,为该安全组配置一条”入方向规则“,放通80/tcp端口,如下所示。

同样的操作,再配置一条安全规则,放通3306/tcp端口(后面数据库需要用到), 配置完成后的规则如下所示。

六、安装数据库

在部署前需要创建和设置好数据库,下面直接选择在云服务器上安装MariaDB数据库为例。

1、安装mariadb数据库

利用XShell远程连接ECS服务器,如下所示的IP地址为ECS的弹性IP地址。

成功连接ECS后,安装mariadb软件包,并启动服务,如下所示

[root@ecs-3dbc ~]# yum -y install  mariadb-server mariadb
……此处省略安装过程输出信息……

# 启动mariadb服务
[root@ecs-3dbc ~]# systemctl start mariadb

# 设置开机自启动
[root@ecs-3dbc ~]# systemctl enable mariadb

2、MySQL数据库安全增强

执行mysql_secure_installation 命令增强数据库安全。

注:Ruoyi数据库连接密码默认指定为password,故下面的新密码按此值设定。

[root@ecs-3dbc ~]# mysql_secure_installation 

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none):     #此处直接回车
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.

Set root password? [Y/n] y    #此处按y键设置新密码为password
New password: 
Re-enter new password: 
Password updated successfully!
Reloading privilege tables..
 ... Success!


By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] y    #此处按y删除匿名用户
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] n    #此处按n键,允许root远程连接数据库
 ... skipping.

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] y    #此处按y键,删除测试数据库及其访问权限
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] y    #此处按y键,重载权限表
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

3、连接数据库

打开Navicat,新建一个MariaDB连接,如下图所示。

填写服务器IP地址(EIP)、端口号3306和登录账号(Ruoyi默认的数据库连接账号为root/password),然后开始连接测试,发现如下1130的错误。

出现1130错误是远程主机被禁止连接,虽然在初始化时允许root用户远程登录,但是仍需要解除IP地址的限制。具体操作过程如下:

(1)登录数据库

[root@ecs-3dbc ~]# mysql -u root -p
Enter password:     #此处输入前面设置的密码

……此处省略其它输出信息……

MariaDB [mysql]> 

(2)查看数据库

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
+--------------------+
3 rows in set (0.00 sec)

(3)更改当前数据库

MariaDB [(none)]> use mysql;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed

(4)查看数据库表

MariaDB [mysql]> show tables;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| db                        |
| event                     |
| func                      |
| general_log               |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| host                      |
| ndb_binlog_index          |
| plugin                    |
| proc                      |
| procs_priv                |
| proxies_priv              |
| servers                   |
| slow_log                  |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
+---------------------------+
24 rows in set (0.00 sec)

(5)查找user表

MariaDB [mysql]> select host,user from user; 
+-----------+------+
| host      | user |
+-----------+------+
| 127.0.0.1 | root |
| ::1       | root |
| ecs-3dbc  | root |
| localhost | root |
+-----------+------+
4 rows in set (0.00 sec)

从上面的输出可以看到root用户当前只允许在localhost主机登录。

(6)新建一个root用户

这里新建一个root用户,并允许它在任何主机远程连接数据库。其中的%表示允许在任何主机远程连接数据库。

# 创建一个用户,并指定密码为password
MariaDB [mysql]> create user 'root'@'%' identified by 'password';
Query OK, 0 rows affected (0.00 sec)

# 授予root用户权限
MariaDB [mysql]> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.00 sec)

 (7)刷新权限表并退出数据库连接

MariaDB [mysql]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

MariaDB [mysql]> select user,host from user;
+------+-----------+
| user | host      |
+------+-----------+
| root | %         |
| root | 127.0.0.1 |
| root | ::1       |
| root | ecs-7d14  |
| root | localhost |
+------+-----------+
5 rows in set (0.00 sec)

MariaDB [mysql]> exit
Bye

(8)再次测试连接,可以看到连接成功,如下图所示。

4、创建数据库并导入SQL脚本 

根据RuoYi官方文档(http://doc.ruoyi.vip/ruoyi/document/hjbs.html)中的说明,部署该项目需要创建数据库ry,并导入两个数据脚本。

 (1)创建数据库

打开连接,并新建一个名为ry的数据库。

填写数据库名为ry。

下载Ruoyi代码压缩包(https://gitee.com/y_project/RuoYi),解压后,在sql目录中找到如下两个sql文件。

在Navicat中分别导入运行这两个SQL文件。

点击“开始”运行该SQL文件。

同样的操作,导入并运行另一个SQL脚本文件。

全部成功运行后,刷新ry数据库下的表,就可以看到该库中的数据表单了。

七、创建部署任务

spring-boot-maven-plugin 构建完之后会生成一个可执行的包,部署任务就是把包上传到服务器上面并且执行部署脚本运行。

1、新建主机集群

在CodeArts项目控制台,依次点击左侧的设备-->通用设置-->基础资源管理-->新建主机集群

在新建主机集群基本信息中,填写集群名称,选择主机OS类型,如下所示。

 

在新建主机集群的目标主机中,点击“新增目标主机”

 

在如下所示的新增目标主机页面,填写前面记录的主机名或主机ID、弹性IP地址、登录账号和SSH连接端口。

将ECS的相关信息填写到对应位置后,添加成功后的目标主机信息如下所示。要求连通性验证能成功。

2、新建部署应用

在CodeArts项目控制台,依次点击左侧的持续交付-->部署-->新建应用。

填写应用名称,单击“下一步”

选择用“SpringBoot应用部署”模板进行部署

在部署步骤中的安装JDK环节,设置jdk版本,这里选择默认的jdk1.8。

在部署步骤中的部署来源环节,设置源类型和部署目录等,这里源类型选择为构建任务,并选择前面新建的构建任务,部署目录设置为Linux服务器的/usr/local目录,示例如下。

在部署步骤中的“停止SpringBoot服务”和“启动SpringBoot服务”环节,设置好包的绝对路径。

因为在部署来源环节已将包下载到/usr/local目录,因此包的绝对路径就是/usr/local/${package_name}.jar。示例如下:

在部署步骤中的“URL健康测试”环节,设置好访问项目的URL地址。

3、新建环境

在“环境管理”中,新建一个环境

设置环境基本信息,包括主机OS类型。

在新环境的资源列表中,导入前面新建的主机集群。

导入成功后的新建环境资源列表如下。

4、设置参数

在新环境的参数设置中,删除package_url参数。

5、保存并执行部署

完成上述操作后,单击右上角的”保存并部署“按钮。

当弹出如下图所示的对话框时,点击下拉列表选择设置host_group,service_port设置为80,package_name为前面编译构建后生成的ruoyi-admin.jar包的主文件名,示例如下。

开始署署,如下所示。

稍等数分钟后,可以看到成功部署完成,如下图所示。

此时,可测试访问项目首页(http://弹性IP地址:service_port),如下图所示。

该项目的测试账号/密码为 admin/admin123

到此,该项目就部署完成了。

八、构建流水线(可选)

流水线就是将各种任务组合起来,然后进行自动化操作。

流水线主要分为以下三种:

(1)每日构建, 主要用于测试每天最新的代码是否正常,一般主要步骤包括:构建 -->部署环境--> alpha测试 -->beta 测试

(2)开发代码合入构建,代码合入之后自动触发对应项目的流水线启动,达成代码合入,自动部署,自动测试的效果。一般主要步骤包括:构建 -->部署环境 -->alpha 测试 -->beta 测试(可选)

(3)发布流水线,用于发布软件包,一般主要步骤包括:构建 -->部署环境 -->alpha 测试 -->beta 测试-->安全扫描 -->软件包发布。

1、新建流水线

在CodeArts控制台,依次点击“流水线”-->”新建流水线”。 

 

填写流水线基本信息,包括名称和代码仓等。

 

在选择模板页面,与前面一致,仍选择SpringBoot编译部署模板。

2、选择任务

一个一个点击任务,并选择前面已创建的任务。
因为没有数据库,无法正常启动服务,所以接口测试(Alpha测试)可以暂时忽略

(1)设置构建任务

(2) 设置代码检查任务

(3)设置部署任务

3、保存并执行

 完成上述任务指定后,单击右上角的“保存并执行”按钮,打开如下所示对话框。

单击下方的“执行”按钮,执行效果如下

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/444555.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C语言:通讯录(纯代码)

目录 背景&#xff1a;VS2019编译器 创建文件&#xff1a; contact.h代码&#xff1a; test.c代码&#xff1a; contact.c代码&#xff1a; 背景&#xff1a;VS2019编译器 创建文件&#xff1a; contact.h代码&#xff1a; #pragma once#include <string.h> #includ…

GTH手册学习注解

CPLL的动态配置 终于看到有这个复位功能了 QPLL SWITCHing需要复位 器件级RESET没发现有管脚引出来 两种复位方式&#xff0c;对应全复位和器件级复位 对应的复位功能管脚 改那个2分频的寄存器说明段&#xff0c;复位是自动发生的&#xff1f;说明可能起效了&#xff0c;但是分…

STM32---通用定时器(二)相关实验

写在前面&#xff1a;前面我们学习了基本定时器、通用定时器的相关理论部分&#xff0c;了解到通用定时器的结构框图&#xff0c;总共包含六大模块&#xff1a;时钟源、控制器、时基单元、输入捕获、公共部分以及输出捕获。对相关模块的使用也做详细的讲解。本节我们主要是对上…

【NR 定位】3GPP NR Positioning 5G定位标准解读(八)- OTDOA定位

前言 3GPP NR Positioning 5G定位标准&#xff1a;3GPP TS 38.305 V18 3GPP 标准网址&#xff1a;Directory Listing /ftp/ 【NR 定位】3GPP NR Positioning 5G定位标准解读&#xff08;一&#xff09;-CSDN博客 【NR 定位】3GPP NR Positioning 5G定位标准解读&#xff08;…

少儿编程 蓝桥杯青少组科技素养题 信息素养真题及解析第25套

少儿编程 科技素养 信息素养真题第25套 1、旅行结束之后&#xff0c;回到家的小蓝决定将照片备份在云端的网盘上。备份照片主要占用的是小蓝家的( )带宽 A、下行 B、上行 C、文件 D、数据 答案&#xff1a;B 考点分析&#xff1a;主要考查网络相关知识&#xff0c;要将照…

多种方法求解数组排序

&#x1d649;&#x1d65e;&#x1d658;&#x1d65a;!!&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦&#x1f44f;&#x1f3fb;‧✧̣̥̇‧✦ &#x1f44f;&#x1f3fb;‧✧̣̥̇:Solitary_walk ⸝⋆ ━━━┓ - 个性标签 - &#xff1a;来于“云”的“羽球人”。…

基于GAN对抗网进行图像修复

一、简介 使用PyTorch实现的生成对抗网络&#xff08;GAN&#xff09;模型&#xff0c;包括编码器&#xff08;Encoder&#xff09;、解码器&#xff08;Decoder&#xff09;、生成器&#xff08;ResnetGenerator&#xff09;和判别器&#xff08;Discriminator&#xff09;。…

CSS中有哪些方式可以隐藏页面元素(区别详解)

文章目录 一、前言二、实现方式display:nonevisibility:hiddenopacity:0设置height、width属性为0position:absoluteclip-path小结 三、区别参考文献 一、前言 在平常的样式排版中&#xff0c;我们经常遇到将某个模块隐藏的场景 通过css隐藏元素的方法有很多种&#xff0c;它…

HttpURLConnection详解及使用

HttpURLConnection 请求响应流程 设置连接参数的方法 setAllowUserInteractionsetDoInputsetDoOutputsetIfModifiedSincesetUseCachessetDefaultAllowUserInteractionsetDefaultUseCaches 发送URL请求 建立实际连接之后&#xff0c;就是发送请求&#xff0c;把请求参数传到…

探讨系统测试的最佳实践与思维模式!

这是测试活动过程详解系列的最后一篇文章。之前的想法&#xff0c;是对测试过程各重要环节进行拆解&#xff0c;然后介绍这个环节重点要做的事情&#xff0c;为什么要做这些事&#xff0c;以及注意事项。 前面几篇文章分别介绍了单元测试、集成测试、回归测试阶段要解决的问题…

初识C语言—初识C语言

前言 C语言全面了解&#xff0c;全貌认识 细致的学习&#xff0c;细枝末节 什么是C语言 维基百科 C 语言是一种通用的高级语言&#xff0c;最初是由丹尼斯里奇在贝尔实验室为开发 UNIX 操作系统而设计的。C 语言最开始是于 1972 年在 DEC PDP-11 计算机上被首次实现。 在 1978 …

【QT+QGIS跨平台编译】之七十六:【QGIS_Native+Qt跨平台编译】(一套代码、一套框架,跨平台编译)

文章目录 一、QGIS_Native介绍二、QGIS下载三、文件分析四、pro文件五、编译实践一、QGIS_Native介绍 QGIS_Native模块是QGIS软件的核心部分,提供了许多基本功能和核心组件,主要用于处理与底层操作系统的关系。 二、QGIS下载 QGIS网址: QGIS Source Download 三、文件分析…

苹果cms模板保护设置,防止被扒

苹果cms模板保护设置&#xff0c;防止被扒 如今互联网时代&#xff0c;网站模板前端被扒是常有的事&#xff0c;如何防止模板数据被扒&#xff1f; 保护设置方法&#xff1a; 登录宝塔 找到安装模板的网站 设置禁止访问文件 方法参考截图后缀填&#xff1a;php|html 目录填&a…

抽象的java发送邮箱2.0版本

优化了更多细节 SpringBoot3&#xff1a;前置框架 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jdbc</artifactId></dependency><dependency><groupId>org.springframewo…

Linux系统架构----nginx上构建虚拟主机

Linux系统架构----nginx上构建虚拟主机 一、构建虚拟主机概述 利用虚拟主机&#xff0c;不用为每个运行的网站提供一台单独的Nginx服务器或单独运行一组Nginx进程&#xff0c;虚拟主机提供了在同一台服务器、同一组Nginx进程上运行的多个网站的功能与Apache相同&#xff0c;N…

【OpenCV】如何在Linux操作系统下正确安装 OpenCV

前言 我是在虚拟机上跑的 Linux 5.8.0-44-generic。 配置如下&#xff1a; 目录 第一步&#xff1a;下载依赖文件 第二步&#xff1a;下载 opencv 和 opencv_contrib 源码 第三步&#xff1a;解压缩包 第四步&#xff1a;移动文件 第五步&#xff1a;生成 makefile 文件 …

深入理解 Webpack 热更新原理:提升开发效率的关键

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

攻击技术:命令和控制服务器(C2)是什么意思

在攻击者使用的众多策略中&#xff0c;最阴险的策略之一是命令和控制服务器&#xff08;C2&#xff09;。通过这篇文章&#xff0c;我们想准确地解释它是什么。 这些服务器充当计算机黑客行动的大脑&#xff0c;协调受感染设备的操作并允许攻击者随意操纵它们。 在网络安全领…

智慧公厕系统的组成部分有什么?

智慧公厕系统是现代城市管理中一项重要的创新&#xff0c;利用物联网、互联网、大数据、云计算、自动化控制等先进的技术手段&#xff0c;提供高效便捷的公厕服务。从信息系统的角度来看&#xff0c;智慧公厕系统主要由硬件、软件和网络组成&#xff0c;硬件、软件和网络三大部…

首屏性能优化:提升用户体验的秘籍

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…