内容简介:该文章用于建立一个小型的基于Walle的持续集成工具。解决java,react,angular项目的编译发布。以便对整个持续集成印象加深。官方网站:大规模集群复杂的构建脚本,请学习Jenkins+Ansible+K8S等生态
该文章用于建立一个小型的基于Walle的持续集成工具。解决java,react,angular项目的编译发布。以便对整个持续集成印象加深。
官方网站: https://walle-web.io/
适用场景
- 小型服务集群(选用Docker-Compose ; 不使用Ansible)
- 简易构建脚本(选用Walle)
大规模集群复杂的构建脚本,请学习Jenkins+Ansible+K8S等生态
基本思路
- 使用Walle替代Jenkins作为构建方案,简化部分操作。但整体的自定义程度会缺失(例如拉去多git路径进行统一编译,不支持额外构建参数的传入)
- 使用Docker-Compose作为单机容器编排分方案
- 环境使用Gitlab作为代码管理,Nexus作为包私有仓库
操作流程
-
研发环境搭建
- Gitlab 搭建和基本操作
- Nexus 搭建(可选)
- Maven 发布
- Npm 发布
- Docker 发布
-
持续集成
- Docker 安装和基本操作
- Walle 安装和基本操作
- Java 前端项目构建脚本
- React/Angular 后端项目构建
数据流程
整体流程会串联整个环境上各技术点,最终形成完整的持续集成方案。
- 发起构建。配置完各环境发布脚本后,则可以使用构建发起进行触发
- 环境准备。初始化环境参数,例如antd-pro的
npm install -g umi
或者npm install -g @tarojs/cli@1.2.11
- Nxues拉取环境相关包。包私有仓库会加速
npm install
以及mvn compile
的下载速度,以及支持私有包的下载 - 代码检出。根据branch的commit进行代码检出操作
- 代码编译。使用
mvn clean compile package -Dmaven.test.skip=true
ornpm run build
等编译脚本,或者进行预处理(例如解压node_modules) - 远程登录。通过shh连接远程服务器
- 本地版本。压缩内容,并发送到远程服务器上打包。并会在远程环境上存放多次发布的版本,用于回退和切换
- 服务停用。进行
kill
等操作,停止原本运行的服务 - 切换启用。通过软连接替换新的本地版本映射到运行路径,再进行服务启动
- 构建完成。可以进行钉钉或者邮件发送。
以上步骤中,在使用Walle的方案下,会集成[代码检出],[远程登录],[本地版本],[切换启用-切换部分],[构建完成]等步骤,且会自动化删除过程文件
成果展示
项目列表
项目详情
部署管理
部署日志
后记
:warning: 以上虽然看起来很复杂,实际情况下会更为复杂。容我们一步一步的解决各问题。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Jenkins 持续集成综合实战
- Go 和 Android 集成实战
- 实战 | Apache Hudi 集成 Alluxio
- Spring Boot集成Redis实战操作
- 持续集成之 Spring Boot 实战篇
- Java SpringBoot集成RabbitMQ实战和总结
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
卓有成效的程序员
Neal Ford / 熊节 / 机械工业出版社 / 2009-3 / 45.00元
《卓有成效的程序员》就是讲述如何在开发软件的过程中变得更加高效。同时,《卓有成效的程序员》的讲述将会跨语言和操作系统:很多技巧的讲述都会伴随多种程序语言的例子,并且会跨越三种主要的操作系统,Windows(多个版本),Mac OS X以及 *-nix (Unix或者Linux)。 《卓有成效的程序员》讨论的是程序员个体的生产力,而不是团队的生产力问题,所以它不会涉及方法论(好吧,可能总会在......一起来看看 《卓有成效的程序员》 这本书的介绍吧!