说明 这篇文章是我的云计算技术的大作业实验报告,搭建了一个基于Jenkins的Devops自动化CI/CD流程。主要参考资料是这个视频,【DevOps教程】DevOps最新教程2022版 目前最好的DevOps课程 从入门到进阶 DevOps实践 DevOps运维 零基础入学 手把手教会_哔哩哔哩_bilibili,只要跟着来是可以顺利搭建好这个框架的。
但这篇博文除了视频内容的具体实践之外,也展现了将项目部署到华为云服务器上的具体操作。同时还有一个很重要的内容是解决了Jenkins使用docker.sock映射宿主机Docker时Docker报错:docker: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32’ not found (required by docker),这个错误网络上没有找到相应的解决办法,也花了很久时间才解决。
这个项目的博客源码以及Jenkinsfile都已上传到我的Github仓库No-drink/blog (github.com)中,希望可以给到一些帮助。
Devops简介 基于现在的互联网现状,更推崇敏捷式开发,这样就导致项目的迭代速度更快,但是由于开发团队与运维团队的沟通问题,会导致新版本上线的时间成本很高。这又违背的敏捷式开发的最初的目的。通过DevOps可以有效解决这个问题。 DevOps,字面意思是Development &Operations的缩写,也就是开发&运维,是一个不断提高效率并且持续不断工作的过程。通过这种方式可以让公司能够更快地应对更新和市场发展变化,开发可以快速交付,部署也更加稳定。其核心就在于简化Dev和Ops团队之间的流程,使整体软件开发过程更快速。
整体的软件开发流程包括:
PLAN:开发团队根据客户的目标制定开发计划 CODE:根据PLAN开始编码过程,需要将不同版本的代码存储在一个库中。 BUILD:编码完成后,需要将代码构建并且运行。 TEST:成功构建项目后,需要测试代码是否存在BUG或错误。 DEPLOY:代码经过手动测试和自动化测试后,认定代码已经准备好部署并且交给运维团队。 OPERATE:运维团队将代码部署到生产环境中。 MONITOR:项目部署上线后,需要持续的监控产品。 INTEGRATE:然后将监控阶段收到的反馈发送回PLAN阶段,整体反复的流程就是DevOps的核心,即持续集成、持续部署。 为了保证整体流程可以高效的完成,各个阶段都有比较常见的工具,如下图: 最终可以给DevOps下一个定义:DevOps 强调的是高效组织团队之间如何通过自动化的工具协作和沟通来完成软件的生命周期管理,从而更快、更频繁地交付更稳定的软件。通过自动化的工具协作和沟通来完成软件的生命周期管理。
系统设计与实现 系统架构设计 使用三台主机。一台Windows11系统进行代码编写及发布。其余两台为Ubuntu系统虚拟机。IP地址为192.168.182.129的虚拟机1用作gitlab仓库,Harbor仓库并安装Jenkins进行项目部署。IP地址为192.168.182.128的虚拟机2则作为服务器用来进行项目的部署和运行。另外还有一台华为云服务器提供MySQL服务(起初希望项目部署到此但由于Harbor仓库没有公网IP故只好作罢)。
系统技术选型与相关工具 本实验所用工具如下表:
工具 用途 安装位置 Code Git 用于提交业务代码或克隆业务代码仓库 192.168.182.129/Windows11 Gitlab 用于存储业务代务 192.168.182.129:8929 Build Maven 用于编译业务代务 192.168.182.129/Windows11 Operate Harbor 用于存储业务代码构建的容器镜像存储 192.168.182.129:80 Docker 用于构建容器镜像,部署项目 192.168.182.129/192.168.182.128 Integrate Jenkins 用于利用插件完成业务代码编译、构建、推送至Harbor容器镜像仓库及项目部署 192.
Continue reading