Linux:Jenkins项目拉取gitlab代码后自动执行脚本上传(3)

0.环境介绍

效果是我去gitlab上修改了代码,再手动点击Jenkins的构建项目,他会自动上传网页到我的web服务器上(这里的web服务器模拟的预生产环境)

主机 ip地址 部署的服务
gitlab 192.168.6.7 gitlab
Jenkins 192.168.6.6 Jenkins,httpd
web 192.168.6.5 httpd
test 192.168.6.4 用于拉取推送git项目

1.部署gitlab

Linux:Gitlab:16.9.2 (rpm包) 部署及基础操作(1)_non-fatal posttrans scriptlet failure in rpm packa-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/w14768855/article/details/136821311?spm=1001.2014.3001.5501Linux:Gitlab:16.9.2 创建用户及项目仓库基础操作(2)-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/w14768855/article/details/136852844?spm=1001.2014.3001.5501我这里部署完了Jenkins之后创建了一个仓库,并写了一个index的html文件,我的仓库名字为git


2.部署Jenkins

Linux:rpm部署Jenkins(1)-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/w14768855/article/details/136920259?spm=1001.2014.3001.5501Linux:Jenkins执行项目拉取gitlab代码(2)-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/w14768855/article/details/136966355?spm=1001.2014.3001.5501我这里的Jenkins做到了项目库可以拉取代码,我本章内容会跟据上面两篇文章继续写

部署httpd,只用进行安装,开启即可,后面做成的效果就是,test上拉取gitlab修改完推送,Jenkins构建完项目会自动执行想要的执行的脚本(也就是自动部署的脚本)

yum -y install httpd
systemctl start httpd

访问服务器ip(不要加8080就是访问的httpd页面)

这样就行


4.部署web

只需要安装开启一下httpd就行,不要修改默认页面,网页一会由jenkins自己去自动部署

yum -y install httpd
systemctl start httpd


5.部署test

test用于拉取git内容,推送一下就行,这里创建了一个test模拟的我们员工上传了代码,Jenkins他构建完会自动上传gitlab中的文件给web

这里只需test可以去把公钥放入gitlab,可以不用密码拉取推送即可

Linux:git的基础操作-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/w14768855/article/details/136787643?spm=1001.2014.3001.5501如果不会放公钥可以去看一下github怎么放,gitlab和github基本都一样,在设置或者用户设置里都可以,我这里不做过多的演示

👇实现的效果

[root@localhost ~]# git clone git@172.20.10.4:root/git.git
正克隆到 'git'...
remote: Enumerating objects: 6, done.
remote: Counting objects: 100% (6/6), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 6 (delta 0), reused 0 (delta 0), pack-reused 0
接收对象中: 100% (6/6), done.
[root@localhost ~]# ls
anaconda-ks.cfg  fiseym.sh  git  jenkins-2.450-1.1.noarch.rpm
[root@localhost ~]# cd git/
[root@localhost git]# ls
index.html  README.md
[root@localhost git]# cat index.html
1123
[root@localhost git]# echo 111111111111 > index.html
[root@localhost git]# cat index.html
111111111111
[root@localhost git]# git add .
[root@localhost git]# git commit -m '123321'
[main c346f0f] 123321
 1 file changed, 1 insertion(+), 1 deletion(-)
[root@localhost git]# git push
warning: push.default 未设置,它的默认值将会在 Git 2.0 由 'matching'
修改为 'simple'。若要不再显示本信息并在其默认值改变后维持当前使用习惯,
进行如下设置:

  git config --global push.default matching

若要不再显示本信息并从现在开始采用新的使用习惯,设置:

  git config --global push.default simple

参见 'git help config' 并查找 'push.default' 以获取更多信息。
('simple' 模式由 Git 1.7.11 版本引入。如果您有时要使用老版本的 Git,
为保持兼容,请用 'current' 代替 'simple' 模式)

Counting objects: 5, done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 273 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@172.20.10.4:root/git.git
   0ad50d0..c346f0f  main -> main
[root@localhost git]#


6.部署Jenkin发布代码(主要步骤)

效果是当我的gitlab内容做出了修改,我点击构建Jenkins的项目,他会在末尾执行一个脚本,脚本的内容写的就是,把拉取下来的代码发送到web上(也就是我们改了之后,Jenkins会自动发布文件到web服务器里)我这里修改的文件就是index.html

Linux:Jenkins执行项目拉取gitlab代码(2)-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/w14768855/article/details/136966355?spm=1001.2014.3001.5501 这里是基于这个文章做的,上面这个文章效果出了,本章就能继续往下做

现在我去构建执行以下Jenkins的项目

构建的结果就是拉取gtilab的内容下来

可以在里面看到,他把拉取下来的内容放到了/var/lib/jenkins/workspace/git

现在我去Linux服务器里看一下(注意:以下操作是在Jenkins服务器上,不要搞混了

没问题

现在我去编写一个脚本

vim scp.sh

# 写入

#!/bin/bash
scp /var/lib/jenkins/workspace/git/* root@192.168.6.6:/var/www/html
scp /var/lib/jenkins/workspace/git/* root@192.168.6.5:/var/www/html

在执行前先去做个免密连接,需要把我们的ssh公钥发送给要传文件的目标放,要不等会要需要一直输入密码,我们在这里可以去输入密码,但是等会Jenkins是要搭配这个脚本的,Jenkins如果还要输入密码的话,那就不是自动化了

ssh-copy-id root@192.168.6.6
ssh-copy-id root@192.168.6.5

可能你好奇自己为什么还要给自己传一个,虽然自己给自己传文件,但是还是需要输入密码的

visudo

#在末尾添加内容

jenkins ALL=(ALL) NOPASSWD: /usr/bin/ssh

现在再去执行一下刚刚写的脚本

chmod +x scp.sh
./scp.sh

可以看到传输成功了、

现在我要去把这个脚本和Jenkins项目放到一起,这样的效果就是,后期构建项目的时候,先拉取下来,让后就会执行这个脚本,脚本就是传到别的服务器上进行测试

回到Jenkins的web页面

点击配置

 sudo ssh root@192.168.6.6 ./scp.sh

输入完点击保存(不要把我上面这段抄进去,你要根据你的ip地址,脚本名称去修改一下)

 

会到这里就好了


7.测试

现在我的Jenkins上搭建web页面和web服务器上的web页面都是这样的,因为刚刚测试脚本的时候同步了一下

现在我到test服务器上去修改一下项目 

再回到Jenkins服务器上点击一下构建项目

 

现在我只点击了一下构建,没做别的,直接去查看两个web页面

自动推送成功

相关推荐

  1. 本地项目gitlab

    2024-03-24 04:44:02       31 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-24 04:44:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-24 04:44:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-03-24 04:44:02       82 阅读
  4. Python语言-面向对象

    2024-03-24 04:44:02       91 阅读

热门阅读

  1. 华为OD机试 C++ -采样过滤

    2024-03-24 04:44:02       40 阅读
  2. im-system 第八章

    2024-03-24 04:44:02       36 阅读
  3. vue3父组件给子组件传值,并在子组件接受

    2024-03-24 04:44:02       38 阅读
  4. LeetCode hot100-17

    2024-03-24 04:44:02       44 阅读
  5. 食品输送带的材质

    2024-03-24 04:44:02       37 阅读
  6. 【Go】Go语言中的数组与切片

    2024-03-24 04:44:02       40 阅读
  7. QT5.14.2深入剖析Qt反射机制的实现原理

    2024-03-24 04:44:02       40 阅读
  8. 技术创新与产业升级

    2024-03-24 04:44:02       45 阅读
  9. MATLAB:是一款功能强大的商业数学软件

    2024-03-24 04:44:02       44 阅读
  10. npm命令详解

    2024-03-24 04:44:02       39 阅读
  11. 克服大型语言模型幻觉使用检索增强生成(RAG)

    2024-03-24 04:44:02       41 阅读
  12. 【保姆级讲解C语言中的运算符的优先级】

    2024-03-24 04:44:02       36 阅读