自动发布系统布置

  • 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自动发布相关推荐

  1. 【Devops实践】Git+Gitlab+Jenkins pipeline(maven+Sonarqube+harbor) +k8s 整合CICD

    代码发布流程 #mermaid-svg-3nZ2WvdeoMR4vRrm {font-family:"trebuchet ms",verdana,arial,sans-serif; ...

  2. 前端H5项目部署到OSS-利用jenkins实现自动发布【生产环境实战】

    前端H5项目发布到OSS 文章目录 前端H5项目发布到OSS 背景 一.创建Bucket 二.为Bucket绑定自定义域名 1.购买的域名和oss在同一个阿里云账号下(大多数) 2.购买的域名和oss ...

  3. Jenkins maven自动发布配置

    说明:    jenkins maven svn实现自动编译及自动发布,svn也可以切换成git,看自己需要!之前也配置过几次,都没有做记录,后面再次配置很多忘记了,又得网上找资料,发现网上的资料很多 ...

  4. Linux企业运维篇——git+gitlab+jenkins+docker构成持续集成环境

    一.GitLab与jenkins Gitlab是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务. Jenkins是一个开源软件项目,是基于Java开发的一 ...

  5. 阿里云Kubernetes服务上从零搭建GitLab+Jenkins+GitOps应用发布模型的实践全纪录

    关于GitOps的介绍,可以参考 GitOps:Kubernetes多集群环境下的高效CICD实践 1. 在 容器服务控制台 创建kubernetes集群 1.1 新建Kubernetes集群: 1. ...

  6. GITLAB JENKINS代码自动部署

    1.前提 部署 jenkins 安装jenkins插件GitGitlabGitlab HookPublish Over SSHSSH AgentGit Paramete 部署 gitlab 2.JEN ...

  7. 贴一段Jenkins的自动发布脚本

    2019独角兽企业重金招聘Python工程师标准>>> 都写的很清楚了,记录一下,以后肯定会用到. if [ ! -f 服务器用户名@服务器IP地址 '/tomcat安装目录/web ...

  8. 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 - ...

  9. Jenkins+Gitlab+Nginx+Maven编译Java项目自动发布与基于tag版本回退(重复构建问题已解决)

    实现流程: 手动部署Java项目至后端Web集群 1.搭建Nginx+Tomcat集群架构. 2.开发提交Java源代码至Gitlab仓库. 3.手动获取Java源代码,然后使用Maven进行编译. ...

最新文章

  1. R语言使用table1包绘制(生成)三线表、使用单变量分列构建三线表、自定义overall的标签名称
  2. Linux 内核里的“智能指针”【转】
  3. SVG动画.animateTransform
  4. 大型前端项目的断点调试共享化和复用化实践
  5. 安卓SlidingDrawer
  6. 微信第三方扫描登录 java源代码_微信开放平台基于网站应用授权登录源码(java)...
  7. C语言基础知识之基本数据类型相关的总结
  8. GoF的23种设计模式之创建型模式的特点和分类
  9. Android操作联系人
  10. 在Ubuntu系统下进行引导修复
  11. Ubuntu常用软件推荐
  12. python秒杀脚本 拼多多_点击劫持漏洞之理解 python打造一个挖掘点击劫持漏洞的脚本...
  13. 追星女孩彩虹屁情话土味情话合集100条
  14. Win11电脑系统使用U盘安装的方法分享
  15. 地下停车场的车内与车外,揭露了中年男人内心最沉重的痛
  16. 三分钟解决文档编辑难题-【文档编辑命令- cat echo vi/vim tail rmdir 】
  17. IDEA import飘红,清除缓存重启也不行
  18. Python金融数据挖掘 第八章 第1节 Apriori算法原理(2)
  19. document的使用方法
  20. Matlab手动安装工具包

热门文章

  1. 序列图(sequence)语法
  2. 除了桃色陷阱和网购骗局 还有哪些骗术在春节期间出现?
  3. python3 from aip import错误,包文件下载
  4. 通信原理_FM广播接收_gnuradio+USRP N320_含仿真流图
  5. Solaris 11安装
  6. linux的find指令
  7. sig值怎么计算_sig计算示例
  8. 初二因式分解奥数竞赛题_初中数学竞赛指导:因式分解竞赛题例析
  9. 自行车测速器怎么调_自行车调速器怎么调
  10. 软件测试CNAS测试可以做什么?