git+gitlab+jenkins+nginx自动发布
自动发布系统布置
- 1.配置说明
- 1.1 服务器主机说明
- 1.2 服务的端口
- 1.3 关于软件的安装
- 2. 具体的步骤
- 2.1gitlab上创建项目
- 2.2 开发者的服务器配置公钥到gitlab
- 2.3 开发者本地克隆项目
- 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
- 2.6 添加jenkins服务器的公钥到gitlab
- 2.7 jenkins上配置全局凭据
- 2.8 jenkins上创建自动构建任务
- 2.8.1 项目的创建
- 2.8.2 项目描述
- 2.8.3 git的配置
- 2.8.4 触发器配置:触发条件
- 2.8.4.1这两个需要复制保存一下
- 2.8.5 构建
- 2.8.6 保存
- 2.8.7 关于权限问题的说明
- 2.8.7.1 方法一
- 2.8.7.2 方式二
- 2.9 jenkins全局安全配置
- 2.10 配置gitlab允许本地网络使用webhook
- 2.11 为gitlab自动构建项目添加webhook
- 3. 代码自动发布测试
- 3.1 简单的测试,都是在kafa的服务器上操作
- 3.2 上传一个网站的代码试试
1.配置说明
1.1 服务器主机说明
主机名称 ip | 作用 |
---|---|
kaifa 192.168.80.40 | 开发人员 |
gitlab 192.168.80.8 | gitla服务器 |
jenkins 192.168.80.9 | jenkins服务器 |
nginx 192.168.80.11 | nginx 服务器 |
虚拟机的ip可以根据的自己的实际情况进行改变即可,注意gitlab的安装需要4G的原型内存,要不然会卡住的
至于gitlab与jenkins的安装前边的章节有
1.2 服务的端口
jenkins | 8080 |
---|---|
gitlab | 80 |
nginx | 80 |
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.pubssh-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.gitll
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 /optgit clone git@192.168.80.8:root/new_project.gitll
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/bashsu - 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/libchown -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
成功,同步过来
成功页面
git+gitlab+jenkins+nginx自动发布相关推荐
- 【Devops实践】Git+Gitlab+Jenkins pipeline(maven+Sonarqube+harbor) +k8s 整合CICD
代码发布流程 #mermaid-svg-3nZ2WvdeoMR4vRrm {font-family:"trebuchet ms",verdana,arial,sans-serif; ...
- 前端H5项目部署到OSS-利用jenkins实现自动发布【生产环境实战】
前端H5项目发布到OSS 文章目录 前端H5项目发布到OSS 背景 一.创建Bucket 二.为Bucket绑定自定义域名 1.购买的域名和oss在同一个阿里云账号下(大多数) 2.购买的域名和oss ...
- Jenkins maven自动发布配置
说明: jenkins maven svn实现自动编译及自动发布,svn也可以切换成git,看自己需要!之前也配置过几次,都没有做记录,后面再次配置很多忘记了,又得网上找资料,发现网上的资料很多 ...
- Linux企业运维篇——git+gitlab+jenkins+docker构成持续集成环境
一.GitLab与jenkins Gitlab是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务. Jenkins是一个开源软件项目,是基于Java开发的一 ...
- 阿里云Kubernetes服务上从零搭建GitLab+Jenkins+GitOps应用发布模型的实践全纪录
关于GitOps的介绍,可以参考 GitOps:Kubernetes多集群环境下的高效CICD实践 1. 在 容器服务控制台 创建kubernetes集群 1.1 新建Kubernetes集群: 1. ...
- GITLAB JENKINS代码自动部署
1.前提 部署 jenkins 安装jenkins插件GitGitlabGitlab HookPublish Over SSHSSH AgentGit Paramete 部署 gitlab 2.JEN ...
- 贴一段Jenkins的自动发布脚本
2019独角兽企业重金招聘Python工程师标准>>> 都写的很清楚了,记录一下,以后肯定会用到. if [ ! -f 服务器用户名@服务器IP地址 '/tomcat安装目录/web ...
- Jenkins+Gitlab+Nginx实现自动发布与回退基于tag版本的静态项目(解决重复构建问题)
环境拓扑: Jenkins -192.168.1.30 Gitlab -192.168.1.31 LB -192.168.1.32 Nginx1 -192.168.1.33 Nginx2 - ...
- Jenkins+Gitlab+Nginx+Maven编译Java项目自动发布与基于tag版本回退(重复构建问题已解决)
实现流程: 手动部署Java项目至后端Web集群 1.搭建Nginx+Tomcat集群架构. 2.开发提交Java源代码至Gitlab仓库. 3.手动获取Java源代码,然后使用Maven进行编译. ...
最新文章
- R语言使用table1包绘制(生成)三线表、使用单变量分列构建三线表、自定义overall的标签名称
- Linux 内核里的“智能指针”【转】
- SVG动画.animateTransform
- 大型前端项目的断点调试共享化和复用化实践
- 安卓SlidingDrawer
- 微信第三方扫描登录 java源代码_微信开放平台基于网站应用授权登录源码(java)...
- C语言基础知识之基本数据类型相关的总结
- GoF的23种设计模式之创建型模式的特点和分类
- Android操作联系人
- 在Ubuntu系统下进行引导修复
- Ubuntu常用软件推荐
- python秒杀脚本 拼多多_点击劫持漏洞之理解 python打造一个挖掘点击劫持漏洞的脚本...
- 追星女孩彩虹屁情话土味情话合集100条
- Win11电脑系统使用U盘安装的方法分享
- 地下停车场的车内与车外,揭露了中年男人内心最沉重的痛
- 三分钟解决文档编辑难题-【文档编辑命令- cat echo vi/vim tail rmdir 】
- IDEA import飘红,清除缓存重启也不行
- Python金融数据挖掘 第八章 第1节 Apriori算法原理(2)
- document的使用方法
- Matlab手动安装工具包