5.Jenkins自动发布项目

Jenkins自动部署html页面测试

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

先创建好一个gitlab项目

5.Jenkins自动发布项目_第1张图片


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

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


关联远程仓库

方法一:克隆项目到本地

git clone -b master http://gitlab.test.com/dev/jd.git
5.Jenkins自动发布项目_第2张图片

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

在这里插入图片描述

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

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

git remote -v可以看到已经与该仓库建立了连接
在这里插入图片描述


提交代码

准备好要用的html代码
在这里插入图片描述

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

按照提示输入用户名密码(比较懒没有做免密操作)
5.Jenkins自动发布项目_第3张图片

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

在这里插入图片描述


配置Jenkins集成gitlab

1.创建一个freestyle的项目名称-freestyle-test
5.Jenkins自动发布项目_第4张图片

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

这里一定要注意,高版本jenkins的配置文件,不是以前的/etc/sysconfig/jenkins,更改它是不起作用的,高版本Jenkins的配置文件为/usr/lib/systemd/system/jenkins.service,改它才有效果!!!
5.Jenkins自动发布项目_第5张图片
5.Jenkins自动发布项目_第6张图片


在Jenkins服务器配置域名解析

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

192.168.xx.xx gitlab.test.com


添加Jenkins的公钥到gitlab上

添加Jenkins的公钥到gitlab上,添加到对项目有权限的用户下
gitlab使用公钥加密,Jenkins通过凭据的私钥解密。这样Jenkins就能获取到项目的代码了。
5.Jenkins自动发布项目_第7张图片


项目发布

接下来就该发布项目了,发布前,先准备好对应的环境。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 [email protected]
ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]


在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脚本,完成发布

调用脚本,发布
5.Jenkins自动发布项目_第8张图片

点击构建
5.Jenkins自动发布项目_第9张图片

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

5.Jenkins自动发布项目_第10张图片

你可能感兴趣的:(Jenkins,jenkins,git)