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 目录下
#-*- 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
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

 

 

  

posted @ 2019-08-15 11:02  人生是一场修行  阅读(779)  评论(2编辑  收藏  举报