基于gitlab和jenkins的自动化部署实例

gitlab+jenkins服务简述:

GitLab是一个代码仓库,用来管理代码。Jenkins是一个自动化服务器,可以运行各种自动化构建、测试或部署任务。
所以这两者结合起来,就可以实现开发者提交代码到GitLab,Jenkins以一定频率自动运行测试、构建和部署的任务,
帮组开发团队更高效的集成和发布代码。

实验环境:

红帽7.3版本虚拟机

gitlab的安装配置,官网给的配置最低要求为4G,使用虚拟机配置的话结合物理机的配置要求分配内存:

[root@test1 ~]# yum install curl policycoreutils openssh-server openssh-clients postfix  安装依赖性
[root@test1 ~]# systemctl status postfix.service  查看服务状态确保开启
[root@test1 ~]# yum install -y net-tools  安装工具包
[root@test1 ~]# ls
gitlab-ce-11.2.0-ce.0.el7.x86_64.rpm
[root@test1 ~]# rpm -ivh gitlab-ce-11.2.0-ce.0.el7.x86_64.rpm  安装gitlab服务

这里写图片描述
安装过程比较慢因为是跟我们分配内存大小相关,安装成功会出来gitlab的图案:
基于gitlab和jenkins的自动化部署实例_第1张图片

[root@test1 ~]# vim /etc/gitlab/gitlab.rb 编辑配置文件写入当前主机IP,修改gitlab仓库路径

这里写图片描述

[root@test1 ~]# gitlab-ctl reconfigure    初始化gitlab

这里写图片描述

[root@test1 ~]# gitlab-ctl restart  重载服务

基于gitlab和jenkins的自动化部署实例_第2张图片
在网页访问输入密码大于八位即可:
基于gitlab和jenkins的自动化部署实例_第3张图片
设置用户密码:
基于gitlab和jenkins的自动化部署实例_第4张图片
成功登陆:
基于gitlab和jenkins的自动化部署实例_第5张图片
我们可以创建一个新工程:
基于gitlab和jenkins的自动化部署实例_第6张图片
创建工程成功:
基于gitlab和jenkins的自动化部署实例_第7张图片
基于gitlab和jenkins的自动化部署实例_第8张图片
配置免密连接:

[root@foundation38 Desktop]# systemctl restart httpd    重启httpd服务
[root@foundation38 Desktop]# cd
[root@foundation38 ~]# cd .ssh/
[root@foundation38 .ssh]# ls
authorized_keys  id_rsa  id_rsa.pub  known_hosts
[root@foundation38 .ssh]# cat id_rsa.pub 查看公钥
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDNeD0hcnCreyvvLHo5fMcQ4MszPyzAihqHQa9plB7Hxn+Qau4SSo8h2jJbhIDtvGfQdrCcB7823+skP6QFrfhUWBUbwZ7UjleSbumA3YhHK/ooCEzDx1kQY9pXxOEIp7jZ4PWfOhvINyFC1RH/kPC7Tx7697lq3mcWQCRS1wArF3vg3AHsNDtswwiYLitHkiZDlUVBBBnwH4GM1xe4YKtQXDOoqjnfxoq2LHFh8JKb/92NvqzYr1w+E8ps/jx+AoeUnv9pU4qtHierA3B/DQawI+wH3ChABZAjmr7zONbdINj1QJIjFmjDOgXQIc2eyYTFJb7/qaCwvm+Cwm6SVitx [email protected]

基于gitlab和jenkins的自动化部署实例_第9张图片
配置gitlab的免密连接:
基于gitlab和jenkins的自动化部署实例_第10张图片
基于gitlab和jenkins的自动化部署实例_第11张图片

[root@foundation38 .ssh]# git clone [email protected]:root/demo.git  进行克隆
Cloning into 'demo'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (3/3), done.
[root@foundation38 .ssh]# cd demo/
[root@foundation38 demo]# ls
README.md
[root@foundation38 demo]# cd .git/
[root@foundation38 .git]# ls
branches  description  hooks  info  objects      refs
config    HEAD         index  logs  packed-refs
[root@foundation38 .git]# git remote -v   
origin	[email protected]:root/demo.git (fetch)
origin	[email protected]:root/demo.git (push)
[root@foundation38 .git]# cd ..
[root@foundation38 demo]# ls
README.md

基于gitlab和jenkins的自动化部署实例_第12张图片

[root@foundation38 demo]# vim README.md 
[root@foundation38 demo]# cat README.md 
# demo
# helloworld

[root@foundation38 demo]# git add README.md   提交到暂存区
[root@foundation38 demo]# git commit -m "add README.md"   直接提交
[master e4b9560] add README.md
 1 file changed, 1 insertion(+)
[root@foundation38 demo]# git push origin master
Counting objects: 5, done.
Writing objects: 100% (3/3), 261 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To [email protected]:root/demo.git
   c11a0b1..e4b9560  master -> master

基于gitlab和jenkins的自动化部署实例_第13张图片
在gitlab界面可以看到实时数据:
基于gitlab和jenkins的自动化部署实例_第14张图片
重新打开一台虚拟机配置jenkins:

[root@localhost ~]# ls
[root@localhost ~]# route -n  查看网关
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
172.25.0.0      0.0.0.0         255.255.0.0     U     100    0        0 eth0
[root@localhost ~]# ip route add default via 172.25.38.250  添加网关
[root@localhost ~]# route -n   查看网关
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.25.38.250   0.0.0.0         UG    0      0        0 eth0
172.25.0.0      0.0.0.0         255.255.0.0     U     100    0        0 eth0
[root@localhost ~]# vim /etc/resolv.conf  配置dns
[root@localhost ~]# cat /etc/resolv.conf 
nameserver 114.114.114.114

基于gitlab和jenkins的自动化部署实例_第15张图片

[root@foundation38 Desktop]# iptables -t nat -I POSTROUTING -s 172.25.38.0/24 -j MASQUERADE  在真机添加策略

这里写图片描述

[root@localhost ~]# ping www.baidu.com  保证虚拟机可以ping通百度(上网即可)

基于gitlab和jenkins的自动化部署实例_第16张图片
jenkins的安装配置:

[root@localhost ~]# ls
jdk-8u171-linux-x64.rpm  jenkins-2.121.1-1.1.noarch.rpm
[root@localhost ~]# yum install * -y

这里写图片描述

[root@localhost ~]# systemctl status jenkins
● jenkins.service - LSB: Jenkins Automation Server
   Loaded: loaded (/etc/rc.d/init.d/jenkins; bad; vendor preset: disabled)
   Active: inactive (dead)
     Docs: man:systemd-sysv-generator(8)
[root@localhost ~]# /etc/init.d/jenkins start  开启服务
Starting jenkins (via systemctl):                          [  OK  ]

基于gitlab和jenkins的自动化部署实例_第17张图片

[root@localhost ~]# yum install net-tools  安装工具包
[root@localhost ~]# netstat -antlp  查看端口8080开启
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      905/sshd            
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1193/master         
tcp        0      0 172.25.38.12:22         172.25.38.250:55754     ESTABLISHED 11819/sshd: root@pt 
tcp6       0      0 :::8080                 :::*                    LISTEN      12175/java          
tcp6       0      0 :::22                   :::*                    LISTEN      905/sshd            
tcp6       0      0 ::1:25                  :::*                    LISTEN      1193/master         

基于gitlab和jenkins的自动化部署实例_第18张图片
在网页访问jenkins:
基于gitlab和jenkins的自动化部署实例_第19张图片
根据提示在虚拟机获取初始化密码:

[root@localhost ~]# cat /var/lib/jenkins/secrets/initialAdminPassword
bdb371f17f07452eb5d935d7ab6d4f16

复制粘贴上去进行下一步:
基于gitlab和jenkins的自动化部署实例_第20张图片
安装建议安装插件:
基于gitlab和jenkins的自动化部署实例_第21张图片
这里要保证所有插件安装成功,保证网络有失败的再次安装即可:
基于gitlab和jenkins的自动化部署实例_第22张图片
创建Admin用户:
基于gitlab和jenkins的自动化部署实例_第23张图片
保存完成:
基于gitlab和jenkins的自动化部署实例_第24张图片
开始使用jenkins:
基于gitlab和jenkins的自动化部署实例_第25张图片
进入jenkins界面:
基于gitlab和jenkins的自动化部署实例_第26张图片
基于gitlab和jenkins的自动化部署实例_第27张图片
在本台虚拟机安装git:

[root@localhost ~]# hostnamectl set-hostname test2  更改主机名字
[root@localhost ~]# exit
logout
Connection to 172.25.38.12 closed.
[kiosk@foundation38 images]$ ssh [email protected]
[email protected]'s password: 
Last login: Fri Aug 24 13:30:58 2018 from 172.25.38.250
[root@test2 ~]# yum install -y git  安装git

这里写图片描述
设置浏览器网页为中文的设置:
基于gitlab和jenkins的自动化部署实例_第28张图片
基于gitlab和jenkins的自动化部署实例_第29张图片
基于gitlab和jenkins的自动化部署实例_第30张图片
查看私钥:

[root@foundation38 ~]# cd /root/.ssh/
[root@foundation38 .ssh]# ls
authorized_keys  demo  id_rsa  id_rsa.pub  known_hosts
[root@foundation38 .ssh]# cat id_rsa  全部复制到网页即可

设置免密保存即可:
基于gitlab和jenkins的自动化部署实例_第31张图片
基于gitlab和jenkins的自动化部署实例_第32张图片

[root@foundation38 demo]# pwd
/home/kiosk/demo
[root@foundation38 demo]# ls
aa.txt  readme.md  test.txt
[root@foundation38 demo]# vim test.txt 
[root@foundation38 demo]# cat test.txt 
test
[root@foundation38 demo]# git add test.txt   提交信息
[root@foundation38 demo]# git commit -m "add test.txt"
[master 02cadf8] add test.txt
 1 file changed, 1 deletion(-)

基于gitlab和jenkins的自动化部署实例_第33张图片

[root@foundation38 demo]# git push origin master  推送信息
Username for 'https://github.com': xuefeilong
Password for 'https://[email protected]': 
Counting objects: 5, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 248 bytes | 0 bytes/s, done.
Total 3 (delta 1), reused 0 (delta 0)
remote: Resolving deltas: 100% (1/1), completed with 1 local object.
To https://github.com/xuefeilong/test.git
   acbf46a..02cadf8  master -> master

基于gitlab和jenkins的自动化部署实例_第34张图片
可以看到有推送信息标志:
基于gitlab和jenkins的自动化部署实例_第35张图片
查看控制台输出可以看到提交的信息:
基于gitlab和jenkins的自动化部署实例_第36张图片
安装gitlab插件:
基于gitlab和jenkins的自动化部署实例_第37张图片
基于gitlab和jenkins的自动化部署实例_第38张图片
构建触发器:
基于gitlab和jenkins的自动化部署实例_第39张图片
基于gitlab和jenkins的自动化部署实例_第40张图片
基于gitlab和jenkins的自动化部署实例_第41张图片

[root@test2 ~]# curl -X PUT --header "PRIVATE-TOKEN: JsL4B7yUKz4Qz8W2_GMy"   'http://172.25.38.11/api/v4/application/settings?allow_local_requests_from_hooks_and_services=true'

这里写图片描述
基于gitlab和jenkins的自动化部署实例_第42张图片
基于gitlab和jenkins的自动化部署实例_第43张图片
基于gitlab和jenkins的自动化部署实例_第44张图片
基于gitlab和jenkins的自动化部署实例_第45张图片

[root@foundation38 demo]# vim hello.txt
[root@foundation38 demo]# cat hello.txt 
hello
hello
hello
hello
hello
[root@foundation38 demo]# git add hello.txt
[root@foundation38 demo]# git commit -m "add hello.txt"
[master 80d86bd] add hello.txt
 1 file changed, 5 insertions(+)
 create mode 100644 hello.txt
[root@foundation38 demo]# git push origin master
Username for 'https://github.com': xuefeilong
Password for 'https://[email protected]': 
Counting objects: 4, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 334 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To https://github.com/xuefeilong/test.git
   f11ce30..80d86bd  master -> master

基于gitlab和jenkins的自动化部署实例_第46张图片
在jenkins网页可以看到提交信息:
基于gitlab和jenkins的自动化部署实例_第47张图片

你可能感兴趣的:(基于gitlab和jenkins的自动化部署实例)