0.写在最前面
这篇文章中,有关于Windows和Linux的两种安装与配置方法
Jenkins的安装平台,强烈建议要按照你的开发平台来选择。也就是说,你的开发平台是Windows,也就在Windows上安装Jenkins,Linux同理。
我的这个项目,是Maven+Gitlab+Java1.8-181+微服务+AntUI+VUE等等的一个微服务项目,开发平台是Windows,我一开始将Jenkins部署在了Linux的服务器上,但是反复报错,后来切到了Windows服务器再次部署,屁事没有………..
0.1.需要注意的点
1.如果开发平台是Windows,那么,jenkins也建议部署在Windows平台上,这样不会出现很多莫名其妙的错误
2.jenkins平台,需要搭建对应的开发组件,比如,我的项目是Java+Maven+Git,那么,平台上也要搭建这些组件
3.下载的jenkins.war,直接java -jar jenkins.war –httpPort=80执行就行,然后网页访问,注意要复制第一次启动的一长串密码
4.需要配置的几个组件:Publish over SSH用于远程传输文件和命令,Maven Integration用于Maven项目建立,Git用于下载项目代码
5.配置git的时候,需要生成git密钥,并同步到项目的gitlab或者对应的代码管理工具账户下
6.下面2.5.1.3里面的各个配置,要根据项目和jenkins平台进行配置
7.配置项目轮巡中的远程服务器的时候,需要关注jenkins平台上项目的位置和打包的位置,以及文件传输到远程服务器后的文件所在位置
8.如果修改了系统配置里的数据(比如我修改了SSH传输配置的名称)就需要在使用该配置的项目里再次确认或者配置一下,因为Jenkins是根据这个名称来找对应的SSH服务,不改名就报错
1. 背景
在实际开发中,我们经常要一边开发一边测试,当然这里说的测试并不是程序员对自己代码的单元测试,而是同组程序员将代码提交后,由测试人员测试;
或者前后端分离后,经常会修改接口,然后重新部署;
这些情况都会涉及到频繁的打包部署;
手动打包常规步骤:
1.提交代码
2.问一下同组小伙伴有没有要提交的代码
3.拉取代码并打包(war包,或者jar包)
4.上传到Linux服务器
5.查看当前程序是否在运行
6.关闭当前程序
7.启动新的jar包
8.观察日志看是否启动成功
9.如果有同事说,自己还有代码没有提交……再次重复1到8的步骤!!!!!(一上午没了)
那么,有一种工具能够实现,将代码提交到git后就自动打包部署勒,答案是肯定的:Jenkins
当然除了Jenkins以外,也还有其他的工具可以实现自动化部署,如Hudson等
只是Jenkins相对来说,使用得更广泛。
2. Jenkins服务器搭建及基本配置
2.1 简介
Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。
2.2 Jenkins自动化部署实现原理
2.3 Jenkins部署环境
基本环境:由于我的项目用到这些,所以需要安装,其它的项目也需要对应的组件以便打包或者其他操作
1.jdk环境,Jenkins是java语言开发的,因需要jdk环境。参考文章:http://www.yangxufei.cn/2021/04/02/Java%E5%AE%89%E8%A3%85/
2.git/svn客户端,因一般代码是放在git/svn服务器上的,我们需要拉取代码。参考文章:https://www.yangxufei.cn/2021/08/13/Git%E5%AE%89%E8%A3%85/
3.maven客户端,因一般java程序是由maven工程,需要maven打包。参考文章:https://www.yangxufei.cn/2021/09/13/Maven%E5%AE%89%E8%A3%85/
以上是自动化部署java程序jenkins需要的基本环境,请自己提前安装好,下面着重讲解Jenkins的安装部署配置。
2.4 Jenkins安装
2.4.1.下载安装包
我最后一次用的包是Windows平台msi文件
2.4.2.在安装包根路径下,运行命令
java -jar jenkins.war --httpPort=8080
(linux环境、Windows环境都一样);
第一次启动需要记录输出的一长串字符为初始密码,用80端口也行,这样网页访问的时候就不用输入后面的端口号了
2.4.3.打开浏览器进入链接 IP:8080
2.4.4.填写初始密码,激活系统
2.4.5.进入插件安装选择
这里建议选择,推荐安装的插件,保证基本常用的功能可以使用。
选择后,进入插件安装页面
2.4.6.设置初始用户和密码
可以跳过,如果跳过的话,后面可以用admin用户登陆,初始密码是上面的初始启动密码,登陆进去后可以修改
2.4.7.进入系统,安装完成
注意,如果还是进入不了系统,需要稍等一下,或者刷新页面,如果还是进入不了,需要重新启动jenkinds服务器。
2.5 Jenkins基本配置
2.5.1.Configure System (系统设置)
在系统设置这里,我们只需要设置最后面的一项,配置远程服务器地址,
如果在这里没有看到Publish over SSH的话,需要进入插件管理,在可选插件里搜索这个插件安装,我这里没搜到是因为我已经安装了
即我们代码最终运行的服务器地址信息,就像我们之前手动部署时使用xshell登录Linux服务器一样,
当然这里是可以配置多台远程Linux服务器的,配置完成后点击保存即可,为后面我们配置自动化部署做准备,配置如下图
我的配置:前面的配置没什么说的,就是指定的远程服务器的信息,关键是最后一个,上传代码的根路径,我的配置,是/opt/bcdsystem/cache,将文件放到远程服务器的指定缓存文件夹里
2.5.2.Configure Gl(全局安全配置)
a.配置用户相关的权限
我用不上,就没配置
b.配置钩子程序
(当用代码更新时通知)访问权限,避免报403错误,用不上,我没搞
默认是勾选上了的,这里去掉勾选
2.5.3.Global Tool Configuration (全局工具配置 )
(Linux和Windows都有,注意区别)
a.配置maven的全局settings路径
b.配置jdk
c.配置git
d.配置maven的安装路径
2.5.4.配置必要插件
主要是检查如下这两个插件是否已安装
插件1:Publish over SSH
插件2:Maven Integration
插件3:Git
到这里,我们配置一个自动化部署的的java程序(springBoot+maven+gitHub),基本必要配置就差不多了,后面配置过程中如果需要再配置。
3.Jenkins + Maven +Git 自动化继承/测试
3.1 配置Git密钥
输入ssh-keygen
输入用户名/密码
会生成两个个yangxf为名字的密钥,私钥和公钥,cat命令查看内容
进到gitlab的页面里添加公钥
3.2 新建Jenkins项目
3.2.1 Jenkins新建任务
3.2.2 输入任务信息
任务名称,选择Maven项目,确定
3.2.3 输入任务描述
3.2.4 输入Git信息
注意这几个都要填写对应的信息,分别是,git地址,用户(没有用户的时候需要点击旁边的“添加”),和分支
如果输入Repository URL之后下面红色报错无法连接,是需要点击下面的3添加Jenkins数据,用密钥或者用户输入信息,注意,使用密钥的话为私钥,我在这里用的是第二个,用户名和密码的方式
3.2.5 构建触发器,轮询
填写 * * * * * 意思是每分钟执行,点击保存即可。也就是,每隔一分钟做一次轮巡,轮巡Git是否上传,若上传,就做下一步处理,相对来说也是比较快的
3.2.6 构建环境
红框里的数据,是需要填写项目的pom文件(用于下载对应jar包)和项目打包命令,这个意思就是mvn clean install
3.2.7 构建后操作
需要注意的是,这里需要组件Publish over SSH,在系统设置里面进行配置,看上面2.5.1.1
第一个name,是选择需要传到哪个远程服务器里,就是SSH配置
source files,是需要传哪些文件,我这里的配置,是**省略前面的父级路径,只传输这几个指定文件,英文逗号分隔
**/hl-bcd-data-2.4.5-exec.jar,**/hl-bcd-flight-2.4.5.jar,**/jeecg-cloud-gateway-2.4.5.jar,**/jeecg-cloud-nacos-2.4.5.jar,**/jeecg-cloud-system-start-2.4.5.jar
我暂时没做remove 和remote 的配置(因为配置了一直报错,sad……)就让文件上传到2.5.1.1指定的目录下
后面的Exec command是要在远程服务器上执行什么命令,我执行的脚本,分别是1.将文件从缓存移动到指定执行目录,2.停掉正在运行的后台,3.启动新的后台
用这样的方式传输文件,并在远程服务器上进行项目的自动化启停
3.2.8 任务构建
返回到主页面,点击任务进行构建
如果这个时候报错,进入任务的配置页面,我有报错一下,是因为我上面的配置pom.xml报错,这个时候,要去对应的目录下找项目的该文件,我的目录是在
Linux:
/root/.jenkins/workspace/test/jeecg-boot/pom.xml
Windows:
C:\Users\Administrator\.jenkins\workspace\highland\jeecg-boot\pom.xml
也有报错
无法连接仓库:Command "/usr/local/git/bin/git ls-remote -h -- http://xxxxxxx.git HEAD" returned status code 1
需要去3.2.3给Git里添加凭据。
然后,再回页面进行项目构建,等待pom里jar包的加载和项目的构建。
然后在执行状态就可以看到我们在执行,左侧的栏会有“构建执行状态”,可以点进去看看
然后坐等SUCCESS,控制台输出会提示,进到系统里也能看到jar包已经打好了,Linux和Windows的路径注意一下
我的Linux路径是:/root/.jenkins/workspace
我的Windows路径是:C:\Users\Administrator\.jenkins\workspace
可以去对应的目录里看是否有jar包的生成。
上面的配置都没问题的话,我经过两次测试,上传后即可成功进行打包并且发布。
4.Jenkins部署VUE项目
前面安装的过程不在赘述,需要注意的是,部署VUE项目,也需要安装相对应的组件,比如我这个项目用到的NodeJs+NPM,参考文章:https://www.yangxufei.cn/2021/06/12/NodeJS%E5%AE%89%E8%A3%85/
4.1前端插件
前端自动化部署,也需要安装对应的Jenkins插件,比如我这里需要的node插件
4.2全局配置
在全局配置里,配置对应的node环境
由于我的服务器上,前端是部署在nginx下,因此,在系统设置里新增加了一个前端需要的SSH server
4.3建立项目
然后就是新建一个Jenkins任务,我用的这个
其中的配置不再详细说明,我只在此贴出我的配置数据,需要注意的是,这里的“构建”里的命令,是Windows的命令,因为在这里,我是通过Windows命令进行操作,第一行是删除之前已有的打包好的项目(其实这一行可以不要,因为打包前会执行删除),后一行是进行本次打包
rd C:\Users\Administrator\.jenkins\workspace\bcdsystem_web\dist\
npm run build