使用Jenkins自动构建部署SpringBoot项目
前提条件
- 一台服务器
建议配置2h4g以上(1h2g的属实有点低了)
- springboot项目手动用maven打包,且jar包可正常运行
如果你的是多模块项目(如图),需要配置好打包,否则启动失败
可浏览文章:SpringBoot多模块打包方式
首先安装(安装的前提需要有docker环境)
下载镜像
docker pull jenkins/jenkins:lts
创建目录
mkdir jenkins_home
启动
这里第一次启动会失败输入docker ps -a 会发现已经有了只是没启动成功
docker restart id 将他启动成功
docker run -di --name=jenkins -p 8080:8080 -v /home/jenkins_home:/var/jenkins_home jenkins/jenkins:lts
给权限
chown -R 1000 /home/jenkins_home
打印日志获取密码
docker logs id
箭头所指就是密码
方法二
[root@localhost data]# cd jenkins_home/secrets/
[root@localhost secrets]# ll
总用量 20
drwxr-xr-x 2 www www 29 9月 14 18:45 filepath-filters.d
-rw-r----- 1 www www 33 9月 14 18:45 initialAdminPassword
-rw-r--r-- 1 www www 32 9月 14 18:45 jenkins.model.Jenkins.crumbSalt
-rw-r--r-- 1 www www 256 9月 14 18:45 master.key
-rw-r--r-- 1 www www 272 9月 14 18:45 org.jenkinsci.main.modules.instance_identity.InstanceIdentity.KEY
-rw-r--r-- 1 www www 5 9月 14 18:45 slave-to-master-security-kill-switch
drwxr-xr-x 2 www www 26 9月 14 18:45 whitelisted-callables.d
[root@localhost secrets]# cat initialAdminPassword
730edbb8adcd4ae7b58f14ac3ccd001d
Jenkins修改初始密码:https://www.pianshen.com/article/7582333512/
进入页面后,选择推荐的插件
全部安装成功后:
输入自己想给的账户密码就好了
有一些会安装失败(我用的服务器,用虚拟机的由于有墙可能访问不到github)
点击重试后
大部分都装上了,有几个可能会装不上,到时候可以手动安装,先点确定
然后创建用户(最好自己创建属于自己的然后点保存并完成)
下一步,URL为,jenkins的IP:端口
插件安装
搜索插件 ssh、maven 先安装那个都行不分先后(红色代表与jenkins版本不匹配)
安装失败重新安装即可(安装成功最底下有成功!)!
安装jdk
点新增JDK,选择版本,登录下oracle账号:2696671285@qq.com Oracle123
账号为up主提供的:https://www.bilibili.com/video/BV1wA411c7aS
之后安装maven(如果你的项目不是maven则安装别的插件)
安装maven
点击应用再保存
配置凭证
然后去添加一个就OK
最好添加一个服务的账户密码和一个gitee的账户密码因为都要用到!
配置ssh
然后点击check cinnection验证是否成功
构建项目
输入任务名称,选择maven
设置源码管理
设置Maven
设置
clean package
然后应用保存
然后我们先构建下,等待结束
但是maven下载依赖速度太慢,我们可以手动关闭构建,把镜像配置为阿里云镜像
修改maven配置
配置文件在你的jenkins数据目录下,例如我的就是:
/home/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation
按照原先方法修改配置文件,把maven远程仓库地址改成阿里云的,这步就不用详细说了吧。
重新构建
点击 立即构建
这次下载速度就快了,构建好的jar包目录在:
/home/jenkins_home/workspace/-cmxzshen/service/target
jekins-test:是任务名称(我创建任务时,少打了个n)
选中查看控制台输出
根据输出就能看到jar的生成目录
然后我们去连接服务器的工具启动看看是否正常
这个需要手动建
/data/journalism/logs.txt &
下面如果怎么运行报错就&改成2>&1
cd /home/jenkins_home/workspace/项目名称/target
nohup java -jar 项目.jar > /data/journalism/logs.txt &
构建后自动部署
netstat -nlp|grep 8081
强制杀死某个端口进程命令,关闭jar包
先把刚才开启的jar包服务关掉
sudo fuser -k -n tcp 8081
设置构建环境配置,构建后操作(构建前就不用设置,测试过,填了就出现错误)
Post一定要加执行脚本
source /etc/profile #初始化配置文件
sudo fuser -k -n tcp 8081 #杀死8081端口
cd /home/jenkins_home/workspace/cmxzshen/target #到你项目路径
nohup java -jar demo-0.0.1-SNAPSHOT.jar > /home/jenkins_home/logs.txt & #运行jar包 and写入日志如果&报错就改成2>&1
Git提交后自动构建
令牌随便输,URL格式就是下面那个英文说明,根据自己的修改(这里等下配置gitee会用到)
然后应用保存
配置Gitee的WebHooks
我这里用的Gitee(公司网进GitHub很不稳定,就选择Gitee了)
Gitee项目里设置URL和秘钥
为了安全自己写个服务用来访问触发Jenkins构建的URL,不直接输入之前的URL
http://你登录Jenkins账户:账户配置的token下面有教@服务器ip:8080/下面那个地址)build?token=你上面那个token
示例
http://admin:111056a6ea8b6706b4d64354b65c1b7218@150.199.193.49:8080/job/cmxzshen/build?token=cmxz
配置(admin:这个token,最后面那个token=上面那个token)
点进去
点击添加就好了
完成测试
Gitee请求成功
jenkins构建成功
这里还有一个大坑
有些兄弟构建执行脚本之后服务会自动杀掉在脚本后面加一个
sleep 10 就行了