git+gitlab+jenkins+nginx自动发布

1.配置说明

1.1 服务器主机说明

主机名称 ip作用
kaifa 192.168.80.40开发人员
gitlab 192.168.80.8gitla服务器
jenkins 192.168.80.9jenkins服务器
nginx 192.168.80.11nginx 服务器

虚拟机的ip可以根据的自己的实际情况进行改变即可,注意gitlab的安装需要4G的原型内存,要不然会卡住的
至于gitlab与jenkins的安装前边的章节有

1.2 服务的端口

jenkins8080
gitlab80
nginx80

1.3 关于软件的安装

最好去软件官网查看,官网的步骤很详细,软件的安装可以看我的git专栏里边
如那件分享:
百度网盘:
链接:https://pan.baidu.com/s/1QRfSIOgpmAUP6QWekIa52g
提取码:t3d1

2. 具体的步骤

2.1gitlab上创建项目

192.168.80.8

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.2 开发者的服务器配置公钥到gitlab

开发者:192.168.80.41
ssh秘钥的生成

ssh-keygen -t rsa
三次回车
cat ~/.ssh/id_rsa.pub

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDCiQXwstMqAhwo1UOiqiTnVI0lRP5CNkg8rEaRL5WnzKNjO0EBt8UpYmRE24gzFJYB+kvSXEmyBz4Q8+Ge3a35tC5IOpKbQVFZpEgdv9gcH8JPMjh1yE6sFY5EI3M8a9s6qSY1s2aoiZIkdIeXwrHm8wbemEmRU/iAU1dDsNwoA2zdghNWCFkQgTlk32I8KFi3soac34TpYT9U/uh3vcSu62WeWw+o0AcXB1QUMpbdnKPKHntpe9HnFH1pf57PwjeolnZzA867KvS2VHpYmQolLOdfEBouKcubIpY8IvmokXaN9fCgqQN3qOELSYZQBKD83p8nbLF7AKjeoW8BdbAV root@yw7

在gitlab的web页面操作
在这里插入图片描述

2.3 开发者本地克隆项目

在这里插入图片描述
在kafa的服务器下边

cd /opt
git clone git@192.168.80.8:root/new_project.git

ll
cd new_project
ll

在这里插入图片描述

2.4 jenkins安装对应的插件

在这里插入图片描述

2.4.1 jenkins安装gitlab与gitlab hook插件

在这里插入图片描述
在这里插入图片描述

2.4.2jenkins图形确认安装git plugin和publish over ssh插件

在这里插入图片描述

在这里插入图片描述

2.5 配置jenkins通过publish over ssh免密连接nginx

只有插件安装完成之后才会有publish over ssh这个选项
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.6 添加jenkins服务器的公钥到gitlab

jenkins服务器上的操作
公钥的生成

ssh-keygen -t rsa 三次回车
[root@web03 build_web]# cat ~/.ssh/id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCqp88fRAlDuOVPvPKTWE4wlAqx8VFe/Dnj6DN86z3/hVd6ChyAAV9WTpDx015nwpd/a56AnZTpWY3JBUWt2QjgN7K0ub0iA72K8e5WN0MWD5c/iiiLMigBzInqkvcy1b3ncpvDjB8BldF1M3UEDzHO1ZR2m21vHvAydbcadSj/zmoLgZVqSzqoQl4cVGLo35aDUZfmQ0w6aLdqv3//xPxIDNBc5sERdRUU3mxwuY6eUIwoLd0iOBUst8B2MzcpyERCg3YmT5W1ObOn1H0Iv8VPzcvq+aDWKwzcJqYwwDuNn/65SsP1EqfqqMbnz5IdZ8M5Y/3B8wXO+HreKAhXAvXL root@web03

gitlab的web页面的操作
在这里插入图片描述
复制gitlab的ssh地址git clone试一试
在这里插入图片描述
在jenkins的服务器上试一试

cd /opt

git clone git@192.168.80.8:root/new_project.git

ll

在这里插入图片描述

2.7 jenkins上配置全局凭据

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
秘钥的查看

cat ~/.ssh/id_rsa
[root@web03 opt]# cat ~/.ssh/id_rsa
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEAqqfPH0QJQ7jlT7zyk1hOMJQKsfFRXvw54+gzfOs9/4VXegoc
gAFfVk6Q8dNeZ8KXf2uegJ2U6VmNyQVFrdkI4DeytLm9IgO9ivHuVjdDFg+XP4oo
izIoAcyJ6pL3MtW953Kbw4wfAZXRdTN1BA8xztWUdpttbx7wMnW3GnUo/85qC4GV
aks6qEJeHFRi6N+Wg1GX5kNMOmi3ar9//8T8SAzQXObBEXUVFN5scLmOnlCMKC3d
IjgVLLfAdjM3KchEQoN2Jk+VtTmzp9R9CL/FT83L6vmg1isM3CamMMA7jZ/+uUrD
9RKn6qjG58+SHWfDOWP9wfMFzvh63igIVwL1ywIDAQABAoIBAQCWouOgDJVE8xtv
BDD3QPZbyQGbypByEKAk/Z0dQiUKvK/XqL85enymGVm2LEZjvo+tyNgzXWXJiOQv
sfismSxNhry27FD3imewExe3gLY17fMrAhABtnc8B0kiBzIu7B7iAvddZ/0ikBVA
p/g9ahAkK8EN5Op3MM8DK4dB0nMrQJ6oYjExkeHb0YhoYd0eNUoczahTw1Vc4pvT
XPr+V/ReoCaNF0olOJWyDTYFcbtDSGAsoA8Cxwx7+Ys8YIT2yI55HmbtAycQLx9S
9mwYa+GSX4kdrcSeNCAcJUMwLxeAkG87+hDKCKaFJCv7XuOBd8RwomIsQpzPRglu
1uKSFgdpAoGBANTwLKpwJhMQkr3rJFiIa8ojT/TWO9PmIOGbm83Ono3MNNlEBmR2
UNKEYHp4g0cNnimE3PZX6KJXntoPsp+dRq4V73EzYF27g61AJNE8zsuka67HJz/f
f8AqSxUWz5yY6WHvRWrYOoARJ/E+UgGeYKmzAxnudEVyhHLdbG6kxzAdAoGBAM0q
qEC6PSRzrhEpdJdCwJN8uSiZWkRhJkijJxWTAwIZz87/krtZiHsAhy9XY2tHBpn3
uBDpQHsiWrHT+O62gkxG+crh8N50SppKMC1yHct9fOOlMkUDba8+zED0+Dh3l590
rorLlJMBTk9tNr8mlQrE5my2J/9LRl0CX4nrjCkHAoGAb8ofSONTudKLl1UpYalN
HXPoeBs4kYhRXt/4rdV5e+vnGuERkhBjYgHJPMKj+Nt3W0i7UEDaitABP23aUt2Y
y7AMYpucTdkxyfTQ32BTGKobNkirnGbThKkvfcTZ/dZxP88D3JHkNHPNSmNzXhIt
oSmvyR9cv1DdpAgG8xdi0ykCgYABtMYba7EQeYnMCL04eMyjLVlY1hWjFe+8kObF
TiirPs20mfl9Z1w0MafuI9rmzHtokl/MfDQWEg4RBoM+cPQacEipgEGBiBQKvm0y
I43N4GhGeFw3qLSjzXDjZWYfChePsue0rca5hjxBetYGtupsYYDNDKK+g8C9C0UC
H5xVxwKBgAzsa7ehyUg2XBMoxF1/r9kNERoNR4AHx8vqTn5JfozSKWpD/bcDQbnC
ehoWKHWfSIcQL7kQE7p/VKQG7D49U444Gndm9YNahfgq1lg/dDGH9n/qwbloecPm
hXYrNMNQritJ7ssx76p3EZCUKL7/zouAGdGnIaQkJ+7AdVCilIQz
-----END RSA PRIVATE KEY-----

复制秘钥的时候需要是完整的从头到尾

2.8 jenkins上创建自动构建任务

2.8.1 项目的创建

在这里插入图片描述
在这里插入图片描述

2.8.2 项目描述

在这里插入图片描述

2.8.3 git的配置

在这里插入图片描述
假若这个时候你复制ssh之后会报错,就是你前边的步骤错了,插件没有安装,私钥公钥没有配置好,全局变量也没有配置好

2.8.4 触发器配置:触发条件

就是这个gitlab上的项目内容发生了更改,触发器触发,自动构建
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

2.8.4.1这两个需要复制保存一下

在这里插入图片描述
在这里插入图片描述

URL: http://192.168.80.9:8080/project/buildweb
8dfebc7c3db087551550af96f70274ec

2.8.5 构建

触发以后执行什么,shell脚本,把更新的代码同步到nginx的站点目录下
在这里插入图片描述

在这里插入图片描述
这个脚本只是测试写的,当然实际中会更加的复杂
大致思路就是把jenkins在gitlab上得到更新的代码,同步到nginx的html目录下,也就是nginx的站点目录,根据站点目录不同可以更改脚本,这个就是演示,越简单越好

#!/bin/bash
/usr/bin/rsync -av --delete /var/lib/jenkins/workspace/build_web/ root@192.168.80.11:/usr/share/nginx/html

jenkins的创建一个项目,就会在目录下生成工作目录

/var/lib/jenkins/workspace/build_web

该目录下就是从gitlab上获取的最新的代码,脚本的意义就是把该目录下的文件进行实时同步到nginx的站点目录

2.8.6 保存

在这里插入图片描述

2.8.7 关于权限问题的说明

当我们保存之后,构建,脚本会爆出权限阻止的问题
原因:

既然是使用jenkins服务器上的jenkins用户来执行,为什么rsync不传给nginx服务器的jenkins用户,而是传给它的root用户?
因为nginx上没有jenkins用户,就算有jenkins用户,对/usr/share/nginx/html也没有写权限

解决办法:

2.8.7.1 方法一
grep jenkins /etc/passwd
usermod -s /bin/bash jenkins
su - jenkins
ssh-copy-id -i root@192.168.80.11

[root@jenkins-server ~]# grep jenkins /etc/passwd
jenkins:x:988:982:Jenkins Automation Server:/var/lib/jenkins:/bin/false

[root@jenkins-server ~]# usermod -s /bin/bash jenkins

[root@jenkins-server ~]# grep jenkins /etc/passwd
jenkins:x:988:982:Jenkins Automation Server:/var/lib/jenkins:/bin/bash

su - jenkins
-bash-4.2$ ssh-keygen -t rsa -C "jenkins user" -N ""

-bash-4.2$ ssh-copy-id -i root@192.168.80.11
2.8.7.2 方式二

1.修改jenkins的管理用户为root

vim /etc/sysconfig/jenkins
JENKINS_USER="root"

2.修改目录权限

cd /var/lib

chown -R root.root jenkins/

3.重启jenkins生效

systemctl restart jenkins

2.9 jenkins全局安全配置

在这里插入图片描述

在这里插入图片描述

2.10 配置gitlab允许本地网络使用webhook

在这里插入图片描述
在这里插入图片描述

2.11 为gitlab自动构建项目添加webhook

在这里插入图片描述
2.8.4.1步骤查看
在这里插入图片描述
在这里插入图片描述
添加成功
在这里插入图片描述

3. 代码自动发布测试

3.1 简单的测试,都是在kafa的服务器上操作

开发者的“192.168.80.41”

cd /opt/new_project
echo 'hello i am kafa!!' index.html
git add .
git commit -m "add index.html"
git push origin main

浏览器访问nginx的服务器

192.168.80.11

在这里插入图片描述
更改信息再次测试

echo 'gen gai ce shi ' >  index.html
git add .
git commit -m "gengai"
git push origin main

访问:

192.168.80.11

在这里插入图片描述

3.2 上传一个网站的代码试试

先将原有的文件清理干净

cd /new_project
git rm -f index.html

清除不了直接
rm -rf ./*

上传准备好的文件

ll

在这里插入图片描述
push到gitlab

git add --all
git commit -m "add html"
git push origin main

查看jenkins的服务器上的工作目录是否有文件

cd /var/lib/jenkins/workspace/build_web
ll

在这里插入图片描述
再看看nginx的站点目录下有没有,这也是一个排错的思路

cd /usr/share/nginx/html
ll

成功,同步过来
在这里插入图片描述

成功页面
在这里插入图片描述

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

长安有故里y

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值