前言你平常在做自己的项目时,是否有过部署项目太麻烦的想法?如果你是单体项目,可能没什么感触,但如果你是微服务项目,相信你应该是有过这种感触的。 这种情况下,我一般会劝你了解一下 Jenkins 这个玩意。怎么了解呢?我会建议你阅读本文 🤡。 本文分为两部分:
你可以根据自己的意愿,选择性的跳过第一部分,因为第二部分才是重点。(通过目录可以快速翻到第二部分) Jenkins 安装当前环境
安装 JenkinsPS:不建议使用 Docker 安装 Jenkins,因为使用 Jenkins 的时候一般会调用外部程序,比如 Maven、Docker、JDK、Nodejs 等,所以我们最好直接安装在本机上,以避免不必要的麻烦。 添加 Jenkins 源执行下面两条命令: sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg./redhat-stable/jenkins.repo --no-check-certificate 通过 yum 安装 Jenkins
修改 Jenkins 端口号1.Jenkins 默认端口号为 8080,输入 2.这里修改了可能还不能生效,还需要修改另一个地方,输入以下指令进行编辑 vim /usr/lib/systemd/system/jenkins.service 3.修改完成后,重新加载配置文件,随后再重启 Jenkins,此时的启动端口应该已经变成你修改的端口号了。
启动 JenkinsJenkins 可以单独指定 Java 路径,在 PS:当前 Jenkins 支持的最低 Java 版本为 11,如果机器上只有 Java8 的朋友需要先安装 Java11 或以上版本。Linux 下多版本 Java 建议通过系统自带的 alternatives 来管理,参考这篇文章外加自己琢磨搞定: 1.输入 如果提示内容不是超时失败,那大概率是你的 Java 没安装好或者版本不对。 2.放行刚刚配置的端口 # 放行15369端口 如果你是在阿里云腾讯云等类似服务器上的话,那你还需要去控制台防火墙或者安全组开放这个端口,像这样:开放端口时记得设置授权 ip,建议你直接给自家 ip 地址授权全部端口号。 3.在浏览器输入 ip+port,可以进入到 Jenkins 的初始化界面,第一次启动要等的比较久:进入这个界面,说明你的 Jenkins 已经在启动中了。 初始化配置 Jenkins1.系统启动完毕后,系统会提示你查看并输入管理员密码,根据中显示的密码位置,打开该文件并将密码复制粘贴即可:
2.密码输入成功后,进入插件安装界面,如果你是新手,直接使用推荐安装的插件即可:3.系统开始安装插件,需要等待系统安装完毕,这一步可能要比较久,耐心等待:安装过程中可能会出现部分插件安装失败的情况,没关系,全部处理完毕后可以选择重试。 4.安装完毕后,系统会提示你创建第一个管理员账户:5.配置 Jenkins 访问地址,便于一些插件使用,一般会有默认值:6.配置完成,点击开始使用 Jenkins:随后就进入到 Jenkins 的管理界面了,不同版本的 Jenkins 界面可能会不一样:至此,Jenkins 安装完毕。 扩展如果你是使用 Jenkins 来对 Java 服务做持续集成的话,那么你还需要安装下面的插件:
安装插件在 实例讲解接下来,我会拿出我的用户微服务构建任务的实际配置来向你进行解读,当你了解了 Jenkins 自动化构建部署的工作原理后,你便可以很快的上手这个玩意,因为你会发现它是如此的简单。 基本环境在此之前,我需要介绍一下我的基本环境:
全局工具配置在 Jenkins 上,我已经配置好了这些构建工具的路径,以便于 Jenkins 可以直接调用到他们,在 创建任务好,现在我们已经准备好环境了,可以创建一个任务来试试水了,输入任务名称,然后选择 任务配置源码管理现在我们已经进入到任务配置界面了,往下划到源码管理的地方,选择 Git,然后填写仓库地址等信息:添加 Credentials 的时候,如果你会使用 SSH 密钥的话,建议还是用这个,但你得在机器上进行格外的配置,这里我就不多说了,不会的话直接用账号密码也是可以的: 构建步骤(Build Steps)第一步:调用 Maven点击增加构建步骤,由于我们是 Maven 管理的项目,需要先使用 Maven 构建,所以第一步就用
install -Dmaven.test.skip=true 构建完镜像了,接下来我们直接使用这个镜像创建容器然后运行就完事了。 第二步:执行 shell 启动容器再添加一个构建步骤,正常情况下我们调用 docker 通过命令行调用就可以了,所以我们现在也添加一个 1.清理之前的旧镜像。由于我们刚刚构建了一个新的镜像,新镜像和旧镜像的名称和版本我们是没有改的,所以旧的镜像就会自动变成 2.停止旧容器运行并删除旧容器。当然我们得先判断一下是否存在旧容器,使用容器名称来进行判断,这部分指令涉及到 3.调用 docker 启动容器,根据项目实际情况来设定不同的参数,我这里设置了网络模式为 host,并且映射了一个容器卷,用于读取 nacos 的地址,再指定容器名称为 大功告成!具体命令如下:
最后别忘了点击保存! 后记经过上面这些步骤,我不仅安装好了 Jenkins,还完成了一个基本的自动化构建脚本,这个脚本会调用 maven 把我的项目打包,然后构建成一个 docker 镜像,再通过一段 shell 命令去启动这个程序。 如果你想尝试启动这个构建任务的话,你可以回到主页点击右边的绿色符号。当然,你大概率是会构建失败的 😯。因为我的这份实例讲解并没有完全的讲清楚,甚至里面有很多步骤你都看不懂,是不是? 其实我并没有想写一份手把手的 Jenkins 使用教程,因为这要写的内容实在是太多了,我甚至可以因此写一本小册了! 还记得我在实例讲解的最开始写的吗?写这个构建案例的目的是让你了解 Jenkins 自动化构建的原理,如果你看到这里已经发现了,这自动化构建,其实就跟我们手动构建部署差不多!只不过是把手动操作的东西设定成了脚本,那你就已经有能力去自己摸索它了。 用用插件、写写脚本,就可以搞定自己项目的自动化部署啦。 实际情况是,我有一台服务器专门用于 Jenkins 自动化部署,还有一台服务器专门用于生产环境,这两台服务器都可以连接到外网,也可以互相访问到彼此。这是由于 Jenkins 构建时是会比较吃 CPU 的,为了不影响生产环境,所以我把它们分开了。当然,这种情况下,脚本也会稍微复杂一点,具体流程大概是下面这样的:
|
|