Linux下基于Gitlab和Jenkins的自动化部署实例(一)—执行shell脚本(方法二)

续我的上篇博文:https://mp.csdn.net/postedit/89250322

 

在实验之前,先进行设置,使得虚拟机可以上网(因为本次实验需要在安装有Jenkins软件的虚拟机server2上下载有关gitlab的软件)

 

##物理机

[root@foundation83 Desktop]# iptables -t nat -I POSTROUTING -s 172.25.83.0/24 -j MASQUERADE

 

##server2

[root@server2 ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=172.25.83.2
PREFIX=24
GATEWAY=172.25.83.83     #设置网关地址
DNS1=114.114.114.114     #设置DNS域名解析

 

[root@server2 ~]# ping www.baidu.com      #测试网络是否ok
PING www.a.shifen.com (220.181.112.244) 56(84) bytes of data.
64 bytes from 220.181.112.244 (220.181.112.244): icmp_seq=1 ttl=50 time=23.0 ms
64 bytes from 220.181.112.244 (220.181.112.244): icmp_seq=2 ttl=50 time=23.7 ms
64 bytes from 220.181.112.244 (220.181.112.244): icmp_seq=3 ttl=50 time=35.0 ms
^C
--- www.a.shifen.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2001ms
rtt min/avg/max/mdev = 23.070/27.307/35.090/5.513 ms

 

 

基于Gitlab和Jenkins的自动化部署实例—执行shell脚本(方法二)

 

1、在jenkins下载有关gitlab的插件(Gitlab ,Gitlab Hook)

 

Linux下基于Gitlab和Jenkins的自动化部署实例(一)—执行shell脚本(方法二)_第1张图片

 

系统管理—>管理插件—>可选插件

Linux下基于Gitlab和Jenkins的自动化部署实例(一)—执行shell脚本(方法二)_第2张图片

 

可以在过滤选择框内搜索gitlab,在搜索结果中选择“Gitlab”和“Gitlab Hook”

Linux下基于Gitlab和Jenkins的自动化部署实例(一)—执行shell脚本(方法二)_第3张图片

 

点击“直接安装”,安装选中的这两个插件

Linux下基于Gitlab和Jenkins的自动化部署实例(一)—执行shell脚本(方法二)_第4张图片

 

下面的图片是插件安装成功之后的界面图

Linux下基于Gitlab和Jenkins的自动化部署实例(一)—执行shell脚本(方法二)_第5张图片

 

2、修改之前创建的hello项目的配置

 

在上一张图片的基础上,点击“返回首页”

Linux下基于Gitlab和Jenkins的自动化部署实例(一)—执行shell脚本(方法二)_第6张图片

 

点击“hello”

Linux下基于Gitlab和Jenkins的自动化部署实例(一)—执行shell脚本(方法二)_第7张图片

 

点击配置,进入hello项目的配置界面

 

<1>配置“源码管理“——上篇博文已经做过

 

<2>配置“构建“——上篇博文已经做过

 

<3>配置构建触发器

 

(1)选中“Build when a change is pushed to GitLab. GitLab webhook URL: http://172.25.83.2:8080/project/hello”。配置界面如下:

Linux下基于Gitlab和Jenkins的自动化部署实例(一)—执行shell脚本(方法二)_第8张图片

 

(2)点击高级,生成通行证token。配置界面如下:

Linux下基于Gitlab和Jenkins的自动化部署实例(一)—执行shell脚本(方法二)_第9张图片

 

点击“generate”,生成token

Linux下基于Gitlab和Jenkins的自动化部署实例(一)—执行shell脚本(方法二)_第10张图片

 

(3)取消之前勾选的“轮询 SCM”

Linux下基于Gitlab和Jenkins的自动化部署实例(一)—执行shell脚本(方法二)_第11张图片

 


值的一提的是:该Jenkins界面配置完“构建触发器“之后,不要关闭界面,因为要在Gitlab的web界面填入Secret  token。该界面一关闭,就看不到Secrect  token的内容了。


 

(4)在Gitlab的web界面

Linux下基于Gitlab和Jenkins的自动化部署实例(一)—执行shell脚本(方法二)_第12张图片

 

点击“小扳手”的标志

Linux下基于Gitlab和Jenkins的自动化部署实例(一)—执行shell脚本(方法二)_第13张图片

 

点击左下角的“设置”,找到关于“外发请求”的设置,设置图如下:

Linux下基于Gitlab和Jenkins的自动化部署实例(一)—执行shell脚本(方法二)_第14张图片

 

点击“Save changes”,进行保存

Linux下基于Gitlab和Jenkins的自动化部署实例(一)—执行shell脚本(方法二)_第15张图片

 

点击“项目”

Linux下基于Gitlab和Jenkins的自动化部署实例(一)—执行shell脚本(方法二)_第16张图片

 

点击“您的项目”

Linux下基于Gitlab和Jenkins的自动化部署实例(一)—执行shell脚本(方法二)_第17张图片

 

点击“Administrator/test”

Linux下基于Gitlab和Jenkins的自动化部署实例(一)—执行shell脚本(方法二)_第18张图片

 

点击左下角的“设置”,点击其中的“导入所有仓库”,其配置如下图:(1)在URL内写入Jenkins中“构建触发器”中的URL;(2)在Secret  Token内内写入Jenkins中“构建触发器”中的生成的Secret  Token。(3)选中下面所有的trigger(触发器)。

Jenkins中“构建触发器”中的URL及Select  Token

Linux下基于Gitlab和Jenkins的自动化部署实例(一)—执行shell脚本(方法二)_第19张图片

Linux下基于Gitlab和Jenkins的自动化部署实例(一)—执行shell脚本(方法二)_第20张图片

Linux下基于Gitlab和Jenkins的自动化部署实例(一)—执行shell脚本(方法二)_第21张图片

Linux下基于Gitlab和Jenkins的自动化部署实例(一)—执行shell脚本(方法二)_第22张图片

 

 

Linux下基于Gitlab和Jenkins的自动化部署实例(一)—执行shell脚本(方法二)_第23张图片

 

上面的Webhook配置好之后,点击SSL验证中的Push  events,进行触发

Linux下基于Gitlab和Jenkins的自动化部署实例(一)—执行shell脚本(方法二)_第24张图片

 

看到200则表示触发成功

Linux下基于Gitlab和Jenkins的自动化部署实例(一)—执行shell脚本(方法二)_第25张图片

 

3、测试

 

<1>测试一:

点击“返回面板”,查看可以执行shell脚本的hello工程是否已经配置好。s下面的球显示蓝色的,即表示构建成功

Linux下基于Gitlab和Jenkins的自动化部署实例(一)—执行shell脚本(方法二)_第26张图片

 

<2>测试二:

返回“hello”上一个页面,点击“#3“左边”蓝色的球“,查看控制台输出,如果有输出,则表示可以执行shell脚本的hello工程是否已经配置好

Linux下基于Gitlab和Jenkins的自动化部署实例(一)—执行shell脚本(方法二)_第27张图片

Linux下基于Gitlab和Jenkins的自动化部署实例(一)—执行shell脚本(方法二)_第28张图片

 

<3>测试三:

进入Jenkins的工作目录,查看是否有Gitlab上test项目中的内容,如果有,则表示可以执行shell脚本的hello工程是否已经配置好

[root@server2 ~]# cd /var/lib/jenkins/workspace/hello   #Jenkins的工作目录
[root@server2 hello]# ll
total 12
-rw-r--r-- 1 jenkins jenkins  4 Apr 12 21:35 file1
-rw-r--r-- 1 jenkins jenkins 12 Apr 12 20:56 index.html
-rw-r--r-- 1 jenkins jenkins  8 Apr 12 20:56 README.md

 

<4>测试四:

下面我们来测试下轮询SCM(只要SVN或Git中数据有更新,则执行构建任务)

 

(1)在server1端:想Gitlab远程仓库推送内容

[root@server1 test]# pwd
/root/test
[root@server1 test]# ls
file1  index.html  README.md
[root@server1 test]# echo is  > file2   #必须在该目录(test的仓库目录)下执行
[root@server1 test]# git add file2
[root@server1 test]# git commit -m "add file2"
[master fcc8eb5] add file2
 1 file changed, 1 insertion(+)
 create mode 100644 file1
[root@server1 test]# git push -u origin master
Counting objects: 4, done.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 296 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To [email protected]:root/test.git
   9bcf5d2..fcc8eb5  master -> master
Branch master set up to track remote branch master from origin.

 

(2)在server2端的Jenkins的web界面上查看,是否进行了第四次构建,查看控制台输出是否多了内容file2,并在Jenkins工作目录下查看是否多了内容file2

Linux下基于Gitlab和Jenkins的自动化部署实例(一)—执行shell脚本(方法二)_第29张图片

 

Linux下基于Gitlab和Jenkins的自动化部署实例(一)—执行shell脚本(方法二)_第30张图片

 

[root@server2 ~]# ll /var/lib/jenkins/workspace/hello
total 16
-rw-r--r-- 1 jenkins jenkins  4 Apr 12 21:35 file1
-rw-r--r-- 1 jenkins jenkins  3 Apr 14 23:49 file2
-rw-r--r-- 1 jenkins jenkins 12 Apr 12 20:56 index.html
-rw-r--r-- 1 jenkins jenkins  8 Apr 12 20:56 README.md

 

你可能感兴趣的:(Linux下基于Gitlab和Jenkins的自动化部署实例(一)—执行shell脚本(方法二))