记录使用华为云CodeArts产生的各种问题
初次尝试使用华为云上的软件开发生产线(CodeArts),从需求管理,代码托管,代码检查到持续交付,中间遇到了很多的问题,在此处记录一下,便于以后参考。在持续交付处也就是部署和流水线里,使用的资源有弹性云服务器ECS(Ubuntu 16.04)和云数据库RDS(MySQL 5.7)
需求管理
实现对于项目的整体规划以及每一次迭代的任务安排(使用的是敏捷的模式):
- 创建需求规划视图 :需求规划使用的是思维导图的方式,从Epic(史诗,我理解的就是项目的名称),Feature(特性),Story(用户故事),Task(具体任务)逐级展开,非常清晰。
- 为用户故事和具体任务添加详细内容:点击Story和Task模块下具体标题或编号,可以打开其详情面板。以任务详情面板为例:在详情面板中可以添加详细描述信息,该任务的处理人,该任务所属的迭代,以及任务的优先级和重要程度。
- 创建迭代计划:输入迭代的名称和开始结束时间(一般是一个星期),并从为规划的工作项中选择要添加到此次迭代的任务。已经开始的迭代可以通过“卡片视图”按钮切换到卡片模式,可以更直观方便地管理任务。
代码托管
创建代码仓库的方式有两种,可以直接创建,也可以从外部仓库导入。
代码检查
创建检查任务,并填写任务名称,代码仓库,分支,语言等信息。之后选择规则集,执行代码检查任务。根据检查的结果对代码进行修改。
持续交付
重中之重,在这个部分遇到了很多的问题。
- 编译构建—创建新任务:点击新建任务,在基本信息部分填写任务名称,代码仓和默认分支,所属项目和代码源一般不用修改。之后点击下一步,选择相应的模版。一般后端选择的是Maven,前端选择的是npm。
- 编译构建—前端注意事项:前端模版选择的是npm,会发现只有三个步骤,其最后上传到软件发布库中的不是一个文件包,而是html文件加上ico文件。因此想要最终结果是一个压缩包,需要在npm构建后添加一步执行shell命令:
zip -r ./dist.zip ./dist
并且在上传软件包到软件发布库这一步中,将路径修改为:
./dist.zip
- 编译构建—后端注意事项:后端模版选择的是Maven,需要再构建步骤的Maven构建中添加pom.xml文件的地址,如下代码示例:
mvn package -f ./demo/pom.xml -Dmaven.test.skip=true -U -e -X -B
- 编译构建—结果:在制品仓库->软件发布库中可以找到,点击最后生成的文件包,页面右侧会展示详细信息,其中下载地址会用到之后的部署环节中。
- 部署—创建新应用:点击新建应用,在基本信息中填写名称,之后点击下一步,选择相应的模版。一般前端选择VUE,后端选择SpringBoot。
- 部署—前端注意事项:
7.1因为部署时不知道之前是否有Nginx启动,因此,在部署步骤里面,安装Nginx之后就是停止Nginx,这一步如果之前没有启动过Nginx会报错,但是不影响最终结果,因此不用管此处的问题。
7.2在编辑下一步下载软件包时,应该注意下载到主机的部署目录中的内容,因为之后解压软件包中会有一个压缩文件路径,如果这两处不一致,会导致找不到软件包从而报错。如果设置的有参数package_path,这里直接填写package_path就可以。
7.3下载软件包:选择源类型,可以选制品仓库,也可以选构建任务,推荐选择构建任务,因为构建任务默认会选择最新的的任务。
7.4在启动Nginx中,要注意其配置文件内容中的location,不要设置错误。(我在此处的处理是添加了一个参数,该参数表示dist目录的位置)。
7.5最后注意参数设置,应用的端口一定要在安全组中开放,软件包的名字应该加上后面的扩展名。 - 部署—后端注意事项:
8.1选择部署来源:同样选择构建任务。
8.2URL健康测试:如果端口对应的页面中没有任何内容,测试会失败,也就部署失败。因此可以在该页面中添加一点简单而无关紧要的东西(如果代码中没有相关内容),来通过URL健康测试。
8.3如果代码中添加了数据库的依赖,但是代码指定的是本地测试时的数据库(即localhost),需要在启动SpringBoot服务中添加命令行参数,来指定云数据库。(我部署在云服务器上,该云服务器和云数据库使用同一个安全组)需要云数据库的内网ip,数据库名,用户名和密码。(此处可以在在数据库中添加新的用户,并使用新用户的用户名和密码进行连接)。
java -jar <软件包名.jar> --spring.datasource.url=jdbc:mysql://<数据库IP>:3306/<数据库名>?serverTimezone=UTC&characterEncoding=utf8 --spring.datasource.username=<数据库用户名>--spring.datasource.password=<数据库密码> &
8.4参数部分一定要设置正确,如果选择构建任务,就不需要设置软件包的url。同时应该注意软件包名即参数package_name是不需要加文件拓展名的。
8.5选择的应用端口应该在安全组中开放。
- 流水线—创建新流水线:点击新建流水线,填写基本信息并选择模版。一般前端选择NodeJS构建(只有构建和检查,可以自己添加上部署),后端选择SpringBoot构建。只要前面的部署已经成功,这里直接选择相应的任务就好,基本不会有什么错误。在编辑处点击执行计划,选择代码提交时触发,之后只需要将代码提交到仓库,就会自动触发流水线,进行代码编译构建和部署操作。
- 其他补充内容:在部署->基础资源管理中,点击新建主机集群,填写基本信息和选择目标主机。目标主机可以使用ip地址导入。之后在编辑部署步骤时,创建新的环境,并在资源列表中导入对应的主机。