自动化部署
“自动化”的具体体现:向版本库提交新的代码后,应用服务器上自动部署,用户或测试人员使用的马上就是最新的应用程序
Jenkins获取源码完成打包和部署
Jenkins 自身采用 Java 开发,所以要必须安装 JDK; 集成的项目基于 Maven 构架,所以 Maven 也必须安装;
首先要安装JDK1.8和maven
安装JDK1.8和Maven教程
使用java通用的war
到官网下载Jenkins https://jenkins.io/download/
把war上传到linux
启动jenkins 不指定端口默认为8080
java -jar jenkins.war (前台启动方式 ctrl+c就关闭)
nohup java -jar jenkins.war --httpPort=8080 > /data/log/jenkins.log & (推荐后台启动方式)
关闭防火墙
systemctl stop firewalld
http:localhost:8080 访问Jenkins
cat /root/.jenkins/secrets/initialAdminPassword查看管理员密码
输入密码进入到
点击安装推荐的插件
等待安装(需要linux能够上网) 安装完成
右下角使用admin继续登陆 下一步完成之后 如果需要登陆admin 密码是上面查看的管理员密码
Jenkins安装成功
使用maven和git搭建Jenkins的自动部署
需要安装git git安装教程
在安装Jenkins中安装所需要的插件
点击系统管理->插件管理 ,安装以下插件
1. Maven Integration jenkins 利用maven编译,打包,所需插件
2. Deploy to Container
安装完插件后,重启Jenkins
系统管理->全局工具配置 ,配置路径
maven配置
JDK配置
git配置
which git查询git的安装路径
全局工具配置配置完成
新建任务
这里使用自己搭建的gitlab做为仓库,因为github的自动构建需要Jenkins有外网才行
配置git
这样就能够从gitlab上获取到源码,点击 或者立即构建,就会执行mvn install打包(例子会生成war包)
把打包好的项目放到需要部署的的服务器上
配置构建后操作 构建的项目在target目录下
配置需要把项目部署到哪个服务器的tomcat上
这里Jenkins的服务器是192.168.79.131。
需要部署的项目的服务器放在192.168.79.132中,需要设置tomcat的账号密码,jenkins才能把部署传上去
到192.168.79.132的tomcat配置文件中设置账号密码
vim /data/apache-tomcat-8.5.35/conf/tomcat-users.xml
加上
tomcat8.5进行管理后台还需要配置webapps/manager/META-INF/context.xml
修改前
指谁能访问,注释掉context或者把127修改成\d+ 这是正则表达式
点击,登陆上面配置的账号密码 tomcat_user 123456 能登录进去证明配置成功
在配置文件server.xml加上修改 URL 地址的编码解码字符集
完成需要部署的服务器的tomcat配置
接下来继续配置Jenkins
添加
保存
点击立即构建
正在构建(就是重新打包)
构建完成后查看部署项目的服务器上tomcat的webapp,就能看到abc.war。
访问http://192.168.79.132:8080/abc/就能访问到部署的项目。
更新代码提交到gitlab
点击立即构建
说明构建成功
安装Gitlab Hook Plugin插件:
系统管理-管理插件-可选插件-Gitlab Hook和Build Authorization Token Root
在linux上执行命令生成token(身份验证令牌)
openssl rand -hex 12
保存
配置gitlab钩子配置
进到gitlab的Settings-Integrations
add webhook之后会报这么一个错
gitlab 10.6 版本以后为了安全,默认不允许向本地网络发送webhook请求,如果想向本地网络发送webhook请求,则需要使用管理员帐号登录,默认管理员帐号是[email protected],密码就是你gitlab搭建好之后第一次输入的密码
再配置钩子
测试一下配置是否成功
Hook executed successfully: HTTP 201表示成功
这样就完成自动构建的配置了,直接git pull 提交代码,就会触发立即构建
大功告成
这里是war的jenkins构建。不知道springboot的jar和dubbo配置是否一致,后续学习