日常开发过程中,更新程序应该是很常见的一件事。但是当服务器过多,每个服务器都需求登陆、拉取代码、打包、停止之前的进程、发动新进程就会很烦,因为你需求在每一台服务器上来重复的这些过程。本文基于浮屠、docker、gitlab、jenkins来实现页面一键布置,首先服务器登陆后装置浮屠。

环境准备

浮屠

#   运用root用户登陆后,装置浮屠
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && bash install.sh

装置完结后会出现如下图页面,只需依照下面地址、用户名及密码即可登陆浮屠页面。

GitLab + Jenkins 自动化构建与部署Spring Boot 程序

docker

浮屠装置完结后,如图,在软件商店中查找docker点击装置就能够了,不需求自己再去百度装置指令啊之类的,不要太便利。

GitLab + Jenkins 自动化构建与部署Spring Boot 程序

jenkins

jenkins相比较装置浮屠、docker仍是要费事些的,这里就不多做其他描绘 传送门,点击【传送门】跳转到一篇专门写centos7装置jenkins的文章,写的蛮详细的。

jenkins装置完结后,有一些装备需求提早装备好,防止后边运用的时候报错。点击菜单【系统办理】,找到【系统装备】后在里面装备域名、git地址、要布置服务器的登陆信息等,如图

GitLab + Jenkins 自动化构建与部署Spring Boot 程序
装备jenkins URL和办理员邮箱
GitLab + Jenkins 自动化构建与部署Spring Boot 程序
装备gitlab地址

GitLab + Jenkins 自动化构建与部署Spring Boot 程序
装备服务器登陆信息,可挑选密码登录或者免密登录

GitLab + Jenkins 自动化构建与部署Spring Boot 程序
免密登录的话要生成key,和key寄存的目录

GitLab + Jenkins 自动化构建与部署Spring Boot 程序
装备好后点击【全局东西装备】,装备jdk地址信息。

GitLab + Jenkins 自动化构建与部署Spring Boot 程序

GitLab + Jenkins 自动化构建与部署Spring Boot 程序

浮屠添加站点

经过浮屠创立于装备布置后要拜访的站点,站点文件目录用于寄存构建后的布置运用的Jar包

树立站点

GitLab + Jenkins 自动化构建与部署Spring Boot 程序
填写好预先准备好的域名,默许运用80端口。假如有补白需求则能够填写,填写完结提交后,其间【根目录】便是最终构建后的程序包寄存方位。

反向署理装备

对外一致运用80端口映射到服务器內的指定程序端口,屏蔽杂乱端口号便于拜访

GitLab + Jenkins 自动化构建与部署Spring Boot 程序

GitLab + Jenkins 自动化构建与部署Spring Boot 程序
假如需求额外装备,点击装备文件进行修改并保存即可。

设置服务自发动

进入/etc/systemd/system目录,新建系统服务文件,命名规则:[程序字母简称][平台类型][环境类型].service,在文件中写入如下内容。

[Unit]
# 服务描绘
Description=file api test service
[Service]
# 履行目录
WorkingDirectory={履行目录}
# 创立私有的内存临时空间
PrivateTmp=true
# 重启行为,always表明不论是什么退出原因,总是重启
Restart=always
# 服务类型,默许为simple表明指定ExecStart发动进程为主进程
Type=simple
# 发动指令
ExecStart={发动指令,如java:java -jar demo.jar}
# 停止指令
ExecStop=kill -15 $MAINPID
# 重启指令
ExecReload={重启发动指令,如java:kill -15 $MAINPID && java -jar demo.jar}
[Install]
# 服务装置设置,用于开机自启用
WantedBy=multi-user.target

履行指令重载系统服务使服务收效并设置开机自启

# 重载系统服务
systemctl daemon-reload
# 设置开机自启
systemctl enable [服务称号].service
# 撤销开机自启
systemctl disable [服务称号].service

Jenkins构建装备

首先点击【新建使命】输入使命称号构建一个maven使命,假如有类似项目可经过下方【仿制】功能,填写已存在使命引证相应使命即可快速创立使命,后续经过调整具体装备完善使命装备。

点击确认进入装备页面,进行通用装备。可在描绘中填写信息,描绘使命;也可在Jenkins小助手中装备构建结果推送

GitLab + Jenkins 自动化构建与部署Spring Boot 程序

点击【源码办理】,装备gitlab的地址,有需求的话能够装备挑选凭证用来授权拜访gitlab;装备好分支,会在构建时拉取指定分支代码,选用tag参数形式布置的话,可在指定分支处改为:refs/tags/${TAG}

GitLab + Jenkins 自动化构建与部署Spring Boot 程序

点击【构建触发器】,勾选【Generic Webhook Trigger】表明当前构建均运用webhook方式提供构建触发点;在Variable中设置变量,以便从恳求中获取到指定的参数赋值给该变量,用于后续过滤指定分支;Expression中挑选JSONPath,从恳求参数中指定途径获取分支值;在Token中定义token,指定只有带着相同token的恳求才触发该使命

GitLab + Jenkins 自动化构建与部署Spring Boot 程序

GitLab + Jenkins 自动化构建与部署Spring Boot 程序

点击【Optional filter】装备只有符合条件的分支触发才履行当前构建使命,在Expression装备过滤表达式,仅当参数匹配为指定表达式时触发构建;在Text中装备前步恳求参数变量称号,运用$符号最初接变量名。

GitLab + Jenkins 自动化构建与部署Spring Boot 程序

点击【Pre Steps】装备工程编译打包指令,在Root POM中指定工程POM文件称号;在Goals and options中指定工程编译指令;如是多模块可install 后加 -pl [模块名] -am; 要害参数说明: -pl 该参数表明指定需求编译打包的模块,-am 表明一起处理前面所选模块所选依赖模块,不然或许导致依赖丢失,-Dmaven.test.skip=true 该参数表明跳过单元测试;

GitLab + Jenkins 自动化构建与部署Spring Boot 程序

假如构建需求发送邮件告诉的话,则点击【构建设置】,在E-mail装备邮件。如图:

GitLab + Jenkins 自动化构建与部署Spring Boot 程序

装备构建后推送程序包并履行指定指令对程序进行操作,点击【构建后操作装备】

GitLab + Jenkins 自动化构建与部署Spring Boot 程序

  1. 添加Send build artifacts over SSH
  2. 新增SSH Service发布类型
  3. 在Name中挑选要衔接的远端服务器,在前面已装备
  4. 在Source files装备编译后程序包在源代码中的寄存目录,多模块需求指定模块名
  5. 在Remove prefix指定文件称号部分要移除的内容,不然程序包称号会加上这一段,多模块需求指定模块名
  6. 在Remote directory指定程序包要推送远端服务器的目录,在浮屠装备过程已装备,留意,该途径为服务器对应的绝对途径
  7. 在Exec command中装备履行预置在远端服务器的系统服务,用来启停程序,在浮屠装备中【设置服务自发动】中,经过systemctl stop [服务名] systrmctl start [服务名] 两条指令

GitLab项目Webhook装备

运用GitLab源代码办理的Webhook特性,在源代码分支进行Merge时向Jenkins发送程序构建恳求,进行程序自动化构建布置。
在gitlab settings中找到Webhook,在URL中填写Jenkins触发器指定URL,此处暂时无法填写域名;在Secret Token填写Jenkins构建使命中预设好的Token;在Trigger中勾选事情触发hook,点击Add webhook就行了

GitLab + Jenkins 自动化构建与部署Spring Boot 程序
接下来就能够测试装备好的jenkins是否收效了,如未收效,可先到服务器目录看Jar包是否现已推送至该目录下,没有则检查构建、推送的装备,如有jar包,则检查浮屠服务装备。