Jenkins自动部署html页面测试

  • 先创建好一个gitlab项目
  • 在本地配置域名解析,一定要做
  • 关联远程仓库
  • 提交代码
  • 配置Jenkins集成gitlab
  • 在Jenkins服务器配置域名解析
  • 添加Jenkins的公钥到gitlab上
  • 项目发布
  • 在本地做域名解析
  • 完成Jenkins与webservers集群的免密
  • 在Jenkins上编写发布脚本
  • 通过Jenkins、调用shell脚本,完成发布


先创建好一个gitlab项目

jenkins获取git代码 jenkins git clone_jenkins


在本地配置域名解析,一定要做

vim /etc/hosts 192.168.xx.xxx gitlab.test.com


关联远程仓库

方法一:克隆项目到本地

git clone -b master http://gitlab.test.com/dev/jd.git

jenkins获取git代码 jenkins git clone_jenkins获取git代码_02

git remote -v可以看到已经与该仓库建立了连接

jenkins获取git代码 jenkins git clone_jenkins_03

方法二:与远程仓库建立连接

git remote add origin http://gitlab.test.com/dev/jd.git

git remote -v可以看到已经与该仓库建立了连接

jenkins获取git代码 jenkins git clone_Jenkins_04


提交代码

准备好要用的html代码

jenkins获取git代码 jenkins git clone_Jenkins_05

git add .git commit -m '第一次提交html代码'git push

按照提示输入用户名密码(比较懒没有做免密操作)

jenkins获取git代码 jenkins git clone_jenkins_06

在gitlab可以看到刚才提交的html代码

jenkins获取git代码 jenkins git clone_jenkins_07


配置Jenkins集成gitlab

1.创建一个freestyle的项目名称-freestyle-test

jenkins获取git代码 jenkins git clone_Jenkins_08

2.找到源码管理–选择git–>填写我们git项目的地址
此处的Credentials(凭证)填写的是Jenkins服务器的root用户的私钥,因为我更改了启动Jenkins的用户为root

这里一定要注意,高版本jenkins的配置文件,不是以前的/etc/sysconfig/jenkins,更改它是不起作用的,高版本Jenkins的配置文件为/usr/lib/systemd/system/jenkins.service,改它才有效果!!!

jenkins获取git代码 jenkins git clone_Web_09


jenkins获取git代码 jenkins git clone_jenkins获取git代码_10


在Jenkins服务器配置域名解析

由于我们是在做测试,所以域名用的是假的,一定要在Jenkins服务器上做劫持,不然Jenkins不知道gitlab.test.com是谁

192.168.xx.xx gitlab.test.com


添加Jenkins的公钥到gitlab上

添加Jenkins的公钥到gitlab上,添加到对项目有权限的用户下

gitlab使用公钥加密,Jenkins通过凭据的私钥解密。这样Jenkins就能获取到项目的代码了。

jenkins获取git代码 jenkins git clone_git_11


项目发布

接下来就该发布项目了,发布前,先准备好对应的环境。lb+两台webservers

负载均衡配置
vim proxy_html.test.com.conf

upstream web {
 	server 192.168.xx.xx1;
 	server 192.168.xx.xx2;
 }
 
 server {
 	listen 80;
 	server_name html.test.com;
 	location / {
 		proxy_pass http://web;
 		include proxy_params;
 	}
 }

配置web集群
集群中的每台机器的配置都一样

vim /etc/nginx/conf.d/html.test.com.conf

server {
	listen 80;
	server_name html.test.com;
	root /code/html;

	location / {
		index index.html;
	}

}

web集群每台机器需要创建一个code目录
mkdir -p /code


在本地做域名解析

将负载均衡的地址解析到写好的域名

192.168.xx.xxx html.test.com


完成Jenkins与webservers集群的免密

ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.xx.xx1
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.xx.xx2


在Jenkins上编写发布脚本

1.进入到jenkins项目的目录中
2.将项目进行打包,打包到指定目录
3.将打包的内容推送到webservers集群
4.登陆到webservers执行解压、创建软连接等操作

#!/usr/bin/bash

webservers="192.168.xx.xx1 192.168.xx.xx2"
Date=$(date +%F-%H-%M)
Web_Dir=/opt
Web_Name=web_jd_${Date}

tar_code() {   #打包项目的函数
	cd /var/lib/jenkins/workspace/freestyle-test1 #进入到jenkins项目的目录中
	tar czf ${Web_Dir}/${Web_Name}.tar.gz ./*  #将项目的目录中的所有内容进行打包,打包到指定目录
}

scp_code() {      #推送项目包的函数,将打包的内容推送到webservers集群
for host in ${webservers}
do
	scp ${Web_Dir}/${Web_Name}.tar.gz root@$host:${Web_Dir}	&& \   #拷贝打包好的项目到集群机器的指定目录
	ssh root@$host "cd ${Web_Dir} && \     #登陆到集群的机器(这就是为什么要Jenkins与webservers集群免密),进入存放项目代码包的目录
			mkdir -p ${Web_Name} && \        #创建一个目录
			tar xf ${Web_Name}.tar.gz -C ${Web_Name} && \  #解压项目包到刚才创建的目录
			rm -f ${Web_Name}.tar.gz && \   #删除压缩包
			rm -rf /code/html && \  #删除Nginx配置中,项目指定的根目录
			ln -s ${Web_Dir}/${Web_Name} /code/html"    #创建软连接
done
}

main() {      #调用前面两个函数
		tar_code
		scp_code
}
		main  #调用main函数

通过Jenkins、调用shell脚本,完成发布

调用脚本,发布

jenkins获取git代码 jenkins git clone_jenkins获取git代码_12

点击构建

jenkins获取git代码 jenkins git clone_jenkins获取git代码_13

不报错的情况下,就可以打开浏览器查看发布结果

jenkins获取git代码 jenkins git clone_jenkins获取git代码_14