Git+Jenkins代码自动上线(4)

这里我们需要吧jenkins服务器的公钥给gitlab
jenkins端生成公钥

[root@jenkins ~]# ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Created directory '/root/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /root/.ssh/id_rsa. Your public key has been saved in /root/.ssh/id_rsa.pub. The key fingerprint is: SHA256:rm4L5a3Of3URrgcywqOKZtsda5eWoBzZiBsJn/HFztE root@jenkins The key's randomart image is: +---[RSA 2048]----+ | | | . | | . o . . | |. . + E o . o | | o * B.oSo o o . | | * =o*o o o | | =.+o.oo . o | | =.++o== . | | o...=X=.. | +----[SHA256]-----+

查看公钥

[root@jenkins ~]# cat .ssh/id_rsa.pub ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDHKs/orwn138ROGQicn8yiku6xB0Sn7dqty5KRpE9kc7Z6QFHMms/XWiZetsaGv+uKq9XDExF+5Tt1J6nCHEmrImstr17/u5uSr+YH/9LWxxv5SDJphdwwkUeoN+xMcQ/uJ5r8aWnCfS4wKoPXpoYe22AokkQ4RuxoAud6ZxLU5Bo0rJx3Q8WI0ew67SBI6bxRkwdgjmJhNsZiI8vsEKhZDW8kNlYTz8WuW9jBI/V+qewUeKDiS0O+zbrE7qMhtB+Rj9R/jEHOgOi2ucINWKaOkL7H8rmlhK3WFi3gVmX8Bj6otg2q7HfjZlBXY9sx28U2f8vzOEoGYiM+546PKM6F root@jenkins

把公钥给gitlab

Git+Jenkins代码自动上线

jenkins关联gitlab

Git+Jenkins代码自动上线

这里报错原因是第一次连接他会有一个确认服务器主机的操作,我们需要确认一下

Git+Jenkins代码自动上线

复制上面的报错,如果出现确认主机情况就输入yes

[root@jenkins ~]# git ls-remote -h git@10.0.0.200:zeq/monitor.git 742c1e0055ccdd69c9626052b5463ed5337ad0c9 refs/heads/master

然后我们删除url重新粘贴一遍就好了

Git+Jenkins代码自动上线

3、构建触发器

选择第四个,点击高级

Git+Jenkins代码自动上线

过滤master分支,生成token

Git+Jenkins代码自动上线

4、添加gitlab端web钩子

复制jenkins项目url和token

Git+Jenkins代码自动上线

添加到gitlab

Git+Jenkins代码自动上线

5、添加构建

在jenkins服务器上创建一个脚本目录

[root@jenkins ~]# mkdir /server/scripts -p

编写一个脚本,把从gitlab拉取过来的代码推送到web服务器上

[root@jenkins ~]# vim /server/scripts/do.sh #!/bin/sh DATE=$(date +%Y-%m-%d-%H-%M-%S) CODE_DIR="/var/lib/jenkins/workspace/freestyle-job" WEB_DIR="/code" IP=10.0.0.7 get_code_tar(){ cd $CODE_DIR && tar zcf /opt/web-$DATE.tar.gz ./* } scp_code_web(){ scp /opt/web-$DATE.tar.gz $IP:$WEB_DIR } code_tarxf(){ ssh $IP "cd $WEB_DIR &&mkdir web-$DATE && tar xf web-$DATE.tar.gz -C web-$DATE" } ln_html(){ ssh $IP "cd $WEB_DIR && rm -rf html && ln -s web-$DATE html" } main(){ get_code_tar; scp_code_web; code_tarxf; ln_html; } main

因为要推送到web服务器上,我们要把公钥给web服务器

[root@jenkins ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@10.0.0.7

增加构建步骤

Git+Jenkins代码自动上线

Git+Jenkins代码自动上线

jenkins自由风格项目创建完成,接下来我们开始配置web服务器

web服务器操作

因为我们最终操作是实现代码自动上线到web服务器,我们要配置web服务器

1.安装nginx扩展源 [root@web01 ~]# vim /etc/yum.repos.d/nginx.repo [nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/7/$basearch/ gpgcheck=0 enabled=1 2、安装nginx [root@web01 ~]# yum install nginx -y 3、配置nginx [root@web01 ~]# vim /etc/nginx/conf.d/git_jenkins.conf server { server_name 10.0.0.7; listen 80; root /code/html; index index.php index.html; } 4.创建代码存放目录 [root@web01 ~]# mkdir /code 5、启动nginx并加入开机自启动 [root@web01 ~]# systemctl start nginx [root@web01 ~]# systemctl enable nginx 进行代码自动上线测试

整个流程是gitlab上的仓库master分支只要做了改动就会通知jenkins服务器,然后jenkins触发构建器拉取gitlab上的代码内容,最后执行shell脚本,把代码推送到web上实现代码的自动上线。

1、gitlab端操作

为了直观的看到代码变化,我们修改主页index.html文件,这里我们方便演示,直接在root用户的master分支进行修改,实际生产环境中是不允许这样做的,切记。
修改步骤和上面讲解gitlab的分支保护步骤一样,我们修改43行的文字改成张恩清ichn.me

Git+Jenkins代码自动上线

Git+Jenkins代码自动上线

2、修改完成后查看jenkins端

这里我们已经自动构建成功了,蓝色代表成功,红色代表失败

Git+Jenkins代码自动上线

3、web端操作

在浏览器上输入web服务器地址查看效果

Git+Jenkins代码自动上线

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/c53ae53e31a194e03eeb7a23048b68b4.html