体系课-Java工程师2022版完结无密

download:体系课-Java工程师2022版完结无密

手把手教你用 Jenkins 自动部署 SpringBoot
CI/CD 是一种经过在应用开发阶段引入自动化来频繁向客户托付应用的办法。
CI/CD 的中心概念能够总结为三点:

持续集成
持续托付
持续部署

CI/CD 主要针对在集成新代码时所引发的问题(俗称"集成天堂")。
为什么会有集成天堂这个“雅称”呢?大家想想我们一个项目部署的过程,拉取代码->构建->测试->打包->部署,假如我们经常需求部署项目,特别是在微效劳时期,效劳特别多的状况下,不停的测试打包部署,那估量得有个人一整天特地做这事了,而这事又是繁琐的反复无意义的。
详细而言,CI/CD 可让持续自动化和持续监控贯串于应用的整个生命周期(从集成和测试阶段,到托付和部署),这些关联的事务通常被统称为"CI/CD 管道",由开发和运维团队以矫捷方式协同支持。
1.1 CI(Continuous Integration)
CI/CD 中的"CI"一直指持续集成,它属于开发人员的自动化流程。胜利的 CI 意味着应用代码的新更改会定期构建、测试并兼并到代码仓库中,该处理计划能够处理在一次开发中有太多应用分支,从而招致互相抵触的问题。
1.2 CD(Continuous Delivery/Continuous Deployment)
CI/CD 中的"CD"指的是持续托付和/或持续部署,这些相关概念有时会穿插运用。两者都事关管道后续阶段的自动化,但它们有时也会单独运用,用于阐明自动化水平。
持续托付(Continuous Delivery)通常是指开发人员对应用的更改会自动停止错误测试并上传到代码仓库(如 GitHub、GitLab 等),然后由运维团队将其部署到实时消费环境中。这旨在处理开发和运维团队之间可见性及沟通较差的问题。因而,持续托付的目的就是确保尽可能减少部署新代码时所需的工作量。
持续部署(Continuous Deployment)指的是自动将开发人员的更改从代码仓库发布到消费环境,以供客户运用。经过一套全自动化的流程,来处理手动测试、编译、打包等操作。持续部署以持续托付的优势为根基,完成了管道后续阶段的自动化。

  1. 什么是 Jenkins
    前面说的 CI/CD 算是一种思想,思想要落地,就需求对应的工具。
    Jenkins 是一款开源的 CI/CD 软件,能够算是 CI/CD 软件指导者,它提供了超越 1000 个插件来支持构建、部署、自动化,根本上可以满足任何项目的需求。
    整体来说,Jenkins 有如下六大特性:

持续集成和持续托付

作为一个可扩展的自动化效劳器,Jenkins 能够用作简单的 CI 效劳器,或者变成任何项目的持续托付中心。

简易装置

Jenkins 是一个基于 Java 的独立程序,能够立刻运转,包含 Windows、Mac OS X 和其他类 Unix 操作系统。

配置简单

Jenkins 能够经过其网页界面轻松设置和配置,其中包括即时错误检查和内置协助。

插件

经过更新中心中的 1000 多个插件,Jenkins 集成了持续集成和持续托付工具链中简直一切的工具。

扩展

Jenkins 能够经过其插件架构停止扩展,从而为 Jenkins 能够做的事提供简直无限的可能性。

散布式

Jenkins 能够轻松地在多台机器上分配工作,协助更快速地跨多个平台推进构建、测试和部署。
其实 Jenkins 有很多好玩的用法,今天我还是想先经过一个简单的案例,先来和大家捋一捋如何运用 Jenkins 来完成一个 Spring Boot 项目的自动发布部署,这样大家对 Jenkins 现有一个直观的认知,各种其他运用细节松哥在以后的文章中再来和大家细聊。

3.2 准备代码
提早准备好测试代码,并上传到代码仓库中。为了愈加逼真一些,小同伴们能够将这个代码仓库设置为私有的,这样未来能够检验 Jenkins 中的配置能否正确。
思索到 GitHub 网络有时分不稳定,我这里运用了 Gitee,一个很简单的 Spring Boot 工程,里边有一个 hello 接口,仅此而已。

3.3 准备效劳器
理论上,我们需求一台效劳器用来跑 Jenkins,还需求一台效劳器作为我的应用效劳器,但是我手头没有多余的效劳器,所以我就将 Jenkins 和我的 Spring Boot 项目部署到一台效劳器上,在接下来的文章中我会和大家阐明每个配置是针对 Jenkins 的还是针对 Spring Boot 的。
另外,有的小同伴可能是在虚拟机上做实验,由于未来我们的代码提交到 Gitee 之后,Gitee 会经过一个 POST 恳求将这个事情告知 Jenkins,进而触发 Jenkins 的构建操作。所以这就请求 Gitee 可以访问到你的 Jenkins 效劳器,所以假如你的 Jenkins 刚好搭建在效劳器上,这事就很容易了,但假如是搭建在虚拟机里,就得经过花生壳之类的内网穿透工具来辅助你的工作了,比拟费事,而且花生壳网速也慢。
不过小同伴们不用担忧,假如你在虚拟上搭建的 Jenkins,并且不愿意折腾花生壳,那么也能够经过手动构建/定时构建的方式去完成项目构建的。

  1. 搭建 Jenkins
    为了省事,我决议用 Docker 搭建 Jenkins,一行命令搞定。
    为了操作便当,我们将 Jenkins 的工作目录映射到我的宿主机中来,因而首先在宿主机中准备一个数据目录(不是必需):

    创立 jenkins 目录

    mkdir /data/jenkins_home/

    修正目录的一切者,以便于 Jenkins 容器可以操作该目录

    chown -R 1000:1000 /data/jenkins_home/
    复制代码
    接下来创立并启动 Jenkins 容器,同时挂载数据卷:
    docker run -d --name jenkins -p 8088:8080 -p 50000:50000 -v /data/jenkins_home:/var/jenkins_home jenkins/jenkins
    复制代码
    由于 Jenkins 在运转的时分需求用到 maven,所以有的人会选择将 maven 目录也作为挂载点,但是我觉得没有必要,特别是关于初学者而言,这块很容易出错,不如将 maven 未来直接拷贝到 Jenkins 容器中,这样反而省事一些。
    执行如上命令,装置胜利之后,阅读器输入 http://localhost:8088 就能够访问了。

你可能感兴趣的:(java)