Jenkins+supervisor部署springboot 项目
一、前言
前面我们已经简介过Jenkins的安装和 利用pipeline完成docker镜像的制作,并且发布到kubernetes,点击查看详情,接下来将介绍一下Jenkins如何发布springboot 项目。
二、准备工作
1 安装jenkins
2 服务器环境初始化
- 创建目录
mkdir /opt/ops/{new,tmp,project,logs,software,backup,scripts}
- 创建python脚本,deploy.py,放在/opt/ops/scripts 目录下
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
#-*- coding:utf-8 -*- import os import subprocess import sys import time date = time.strftime("%Y%m%d-%H%M%S",time.localtime()) BASE_DIR="/opt/project" BACK_DIR="/opt/ops/backup" NEW_DIR="/opt/ops/new" ServerDict={ "jj-jindun-app":{ "projectname": "jj-jindun-app", "packagename": "jj-jindun-app.jar", "port": 8088 }, "jj-jindun-back":{ "projectname": "jj-jindun-back", "packagename": "jj-jindun-back.jar", "port": 8089 }, } print "当前启动项目有:\n%s"%ServerDict.keys() def deploy(project): profile=os.path.join(BASE_DIR,ServerDict[project]["packagename"]) profile_bk=os.path.join(BACK_DIR,ServerDict[project]["packagename"])+"-"+date profile_new=os.path.join(NEW_DIR,ServerDict[project]["packagename"]) print profile_bk,profile,profile_new if os.path.exists(profile): os.system("cp -ar %s %s"%(profile,profile_bk)) else: os.system("cp -ar %s %s"%(profile_new,profile)) if os.path.exists(profile): print("start") os.system("cp -af %s %s"%(profile_new,profile)) print("done") os.system("supervisorctl restart %s"%project) time.sleep(40) if not os.system("netstat -antpl|grep -w %s"%ServerDict[project]["port"]): os.system("supervisorctl status %s"%project) print "%s项目上线Successful"%project else: os.system("cp -ar %s %s"%(profile_bk,profile)) os.system("supervisorctl restart %s"%project) print "%s项目上线Failed"%project sys.exit(1) else: print "项目文件不存在,更新失败" if __name__ == "__main__": if len(sys.argv) == 1: print "您必须要输入服务名" else: for i in sys.argv[1:]: if i in ServerDict.keys(): deploy(i) else: print "该项目不存在当前服务列表里" deploy.py
注:脚本需要根据项目情况进行修改
- Jenkins服务器与生产服务器配置免密,下面操作在Jenkins服务器上完成
[root@middleware software]# ssh-keygen 一直回车即可
[root@middleware software]# ssh-copy-id -i 192.168.0.5 (生产服务器IP)
3 生产服务器安装进程管理工具supervisor
yum -y install supervisor systemctl enable supervisord.service systemctl start supervisord.service
修改supervisor配置文件,supervisord.conf 文件末尾添加项目配置信息。
vim /etc/supervisord.conf
[program:项目名] #jdk 路径 environment=JAVA_HOME=/usr/java/jdk1.8.0_131 directory=/opt/java/ command=/usr/java/jdk1.8.0_131/jre/bin/java -Xms512m -Xmx512m -jar 项目jar包 --spring.profiles.active=prod stderr_logfile=/opt/ops/logs/项目名.err.log stderr_logfile=/opt/ops/logs/项目名.log
4 安装git
yum -y install git
5 安装maven
yum -y install maven
6.配置Jenkins
修改MAVEN_HOME
三、创建jenkins任务
1.新建任务
2.配置策略
3.源码管理
4.Build配置
5.post Steps
scp target/xxpay-shop.jar 192.168.0.5:/opt/ops/new/xxpay-shop.jar ssh root@192.168.0.5 "python /opt/ops/scripts/deploy.py xxpay-shop"
6. 发布项目
四、其他注意事项
1.将jenkins服务器SSH Key粘贴到GitHub
如果git仓库为私有,需要登陆信息验证,那么需要将SSH Key配置到GitHub
进入GitHub
登录GitHub --> 点击右上角的头像 --> Settings --> SSH and GPG keys --> New SSH Key
填写名称和SSH公钥
首先先确认在/root/.ssh/下有id_rsa和id_rsa.pub,然后将id_rsa.pub的内容复制到Key中
测试GitHub和Linux是否连通
ssh git@github.com
出现You’ve successfully authenticated表示连通成功
2.更换国内阿里nexus源
vim /etc/maven/settings.xml
<mirror> <id>nexus-aliyun</id> <mirrorOf>*</mirrorOf> <name>Nexus aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public</url> </mirror>
3.如果有其他疑问,可以联系我 QQ: 986109409