二、gitlab+Jenkins+nginx实现自动化

五、gitlab+Jenkins+nginx实现自动化

1.1 Jenkins安装Gitlab所需插件

#Gitlab Hook插件可能找不到	Jenkins 2.346.3。该插件的功能集成到了gitlab plugin

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V4Msbpkb-1689159048209)(E:\教学资料\※笔记※\复习\assets\image-20230710212112.png)]

1.2 Jenkins创建freestyle项目

1.2.1 创建自由风格的项目

#配置常规的配置。项目的描述、丢弃旧的构建保留10份

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aqBN1FZM-1689159048210)(E:\教学资料\※笔记※\复习\assets\image-20230710105535461.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b9fYCshu-1689159048211)(E:\教学资料\※笔记※\复习\assets\image-20230710105550365.png)]

1.2.2 配置源码管理

#复制gitlab中的地址到Jenkins中

报错:
无法连接仓库。需要配置ssh密钥到gitlab中的用户上。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WQdreU7j-1689159048211)(E:\教学资料\※笔记※\复习\assets\image-20230710110202241.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cGN149lI-1689159048212)(E:\教学资料\※笔记※\复习\assets\image-20230710110214909.png)]

1.2.3 gitlab创建Jenkins用户

#创建Jenkins用户并且。Jenkins主机安装git指令
1、创建Jenkins用户
#gitlab中创建,并且给予webhp项目的权限
2、Jenkins服务配置git
[root@jenkins ~]# yum -y install git
[root@jenkins ~]# ssh-keygen 					#生成密钥
[root@jenkins ~]# cat .ssh/id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCzPmI4IsT8vTQBY3jiW7f/K8g0CtMQBvsTg/MLbA4LK/yDioOBMcchUlJ56aYliYUDbwGivgbMFZKgH+PjWgwbj5g/MqQFhnK450OeDtREMRJHzMImTsWNPQ8n2i18zGOPlQduS9ah6dndJM75G7ZYtj0M99TBnjDJD9llcQXf72Wvgy1R86bIOpJw4ukz0IKB9hrNiRHRu9iN4ccngYuW61DiDR22e0+AfRylNUXCPIRBROfKO75tGCoDlzLn8oFTehoHFCeH9IIHhGG8o7ZpGFq0KNTKyeCPXORw2ldfWD4/BW78Ifwe8QWXPe0v4y7XrWuzJ0m5zPlP+r2iFw09 root@jenkins
#查看公钥。需要配置到gitlab中
3、验证Jenkins是否可以通过ssh拉取代码
[root@jenkins webhp]# git config --global user.email "3241589813@qq.com"			#配置为Jenkins的用户信息
[root@jenkins webhp]# git config --global user.name "jenkins"
[root@jenkins ~]# git clone git@192.168.222.133:devops/webhp.git		#无需输入账户密码。可以直接拉取代码
Cloning into 'webhp'...
The authenticity of host '192.168.222.133 (192.168.222.133)' can't be established.
ECDSA key fingerprint is SHA256:FwhcfCp+J2+nTXfRbDcXruRsxJSKRAAbb7v9zdjARPc.
ECDSA key fingerprint is MD5:6c:75:bf:77:e7:8c:d6:aa:14:90:0e:3d:15:f2:17:04.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.222.133' (ECDSA) to the list of known hosts.
remote: Enumerating objects: 22, done.
remote: Counting objects: 100% (22/22), done.
remote: Compressing objects: 100% (21/21), done.
remote: Total 22 (delta 3), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (22/22), 355.19 KiB | 0 bytes/s, done.
Resolving deltas: 100% (3/3), done.


[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hq5H53Fv-1689159048212)(E:\教学资料\※笔记※\复习\assets\image-20230710110722869.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RPnUprQE-1689159048213)(E:\教学资料\※笔记※\复习\assets\image-20230710111215743.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ndZ6j4N1-1689159048214)(E:\教学资料\※笔记※\复习\assets\image-20230710111516596.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0aUHTWOR-1689159048215)(E:\教学资料\※笔记※\复习\assets\image-20230710111632517.png)]

1.2.4 配置私钥为Jenkins的凭据

#将Jenkins服务器的私钥配置成一个Jenkins凭据,实现Jenkins项目免密拉取Gitlab代码
#因为上面我们已经将Jenkins的公钥配置到了Gitlab的root用户SSH密钥配置中,现在Jenkins上的项目要去Gitlab拉取代码,需要再将Jenkins本机的私钥内容添加到Jenkins凭据中并在项目Git连接配置栏指定该私钥,即可完成认证(公钥-私钥)并免密连接拉取代码。

#报错修改gitlab的启动用户!!!
1、修改Jenkins的启动用户为root
[root@jenkins ~]# vim /etc/sysconfig/jenkins
JENKINS_USER="root"
[root@jenkins ~]# vim /usr/lib/systemd/system/jenkins.service
User=root
Group=root			#修改用户和组
[root@jenkins ~]# systemctl daemon-reload
[root@jenkins ~]# systemctl restart jenkins.service				#重启Jenkins服务
[root@jenkins ~]# ps -ef | grep "jenkins" | grep -v grep
root       2593      1 59 20:16 ?        00:00:18 /usr/bin/java -Djava.awt.headless=true -jar /usr/share/java/jenkins.war --webroot=%C/jenkins/war --httpPort=8080
2、jenkins服务器和gitlab服务器做免密
[root@jenkins workspace]# ssh-copy-id -i .ssh/id_rsa.pub root@192.168.222.133
#解决报错。一开始搭建的时候还是直接用root用户启动Jenkins较好!!!

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FsiJf21y-1689159048215)(E:\教学资料\※笔记※\复习\assets\image-20230710113323630.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vW8sT6yA-1689159048215)(E:\教学资料\※笔记※\复习\assets\image-20230710113427505.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p0sCB5VC-1689159048216)(E:\教学资料\※笔记※\复习\assets\image-20230710113536853.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bh6FmSqn-1689159048216)(E:\教学资料\※笔记※\复习\assets\image-20230710114039630.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2l1ZckeE-1689159048217)(E:\教学资料\※笔记※\复习\assets\image-20230710121206686.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AFcwtN5H-1689159048217)(E:\教学资料\※笔记※\复习\assets\image-20230710125505840.png)]

1.3 测试Jenkins拉取线上代码

1、构建触发器
#跳过
2、构建环境
#可以选择向控制台输出时间戳
#失败终止构建等
3、构建
#可以执行shell脚本。可以脚本里可以调用webhok发通知!!!
4、构建后的操作
#一般都是发个邮件啥的!通知下运维
5、开始构建
#查看控制台输出
[root@jenkins workspace]# pwd
/var/lib/jenkins/workspace
[root@jenkins workspace]# ls
webhp-gitlab项目  webhp-gitlab项目@tmp

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qHOxvhua-1689159048217)(E:\教学资料\※笔记※\复习\assets\image-20230710125617619.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9856Bq2Z-1689159048217)(E:\教学资料\※笔记※\复习\assets\image-20230710163213346.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wmFogeFK-1689159048218)(E:\教学资料\※笔记※\复习\assets\image-20230710125915336.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kcUISI3n-1689159048218)(E:\教学资料\※笔记※\复习\assets\image-20230710130429530.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xcQeaymy-1689159048219)(E:\教学资料\※笔记※\复习\assets\image-20230710163435810.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uEYnUdNj-1689159048219)(E:\教学资料\※笔记※\复习\assets\image-20230710130705577.png)]

1.4 webhp项目自动发布

1.4.1 配置发布脚本

#手动编写Shell上线脚本,由Jenkins调用,拉取Gitlab代码并推送至Web服务器组实现项目上线
1、jenkins主机和nginx主机配置免密
#nginx和gitlab属一台机器,已经配置免密,无需二次配置!!!
2、编写shell脚本
[root@jenkins ~]# mkdir /root/shell
[root@jenkins shell]# vim webhp_publish.sh 
#!/bin/bash
DATE=$(date +%Y-%m-%d_%H:%M)      #定义时间戳变量
webhp_dir="/root/webhp"                                  #nginx指定的前端路径
web_host="192.168.222.133"
WORKSPACE="/var/lib/jenkins/workspace"

#思路:
#1.Jenkins将Gitlab代码拉取至工作目录后,需先将项目代码打包
get_code(){
        find $WORKSPACE -name "*tmp" | xargs rm -rf                     #删除生成的临时文件
        tar -zcf /opt/webhp-${DATE}.tar.gz -C $WORKSPACE .      #将workspace目录下的内容压缩到opt/webhp-data.tar.gz
        #WORKSPACE 是一个内置的环境变量,它表示当前构建的工作目录。每个 Jenkins 构建都会在主机上创建一个唯一的工作目录,
}

copy_code(){
        scp -r /opt/webhp-${DATE}.tar.gz root@${web_host}:/opt
        ssh root@${web_host} "tar -xf /opt/webhp-${DATE}.tar.gz -C /opt && \
        ls -l /opt && \
        cp -rf ${webhp_dir} ${webhp_dir}.bak && \
        rm -rf ${webhp_dir} && \
        mv /opt/webhp-gitlab项目-线上发布 ${webhp_dir} "
}

deploy(){
        get_code
        copy_code
}

deploy

1.4.2 修改代码并上线

#小改动前端的代码。查看是否可以正常执行!!!	
1、index.html
    <h1 style="color: blue; text-align: center; width: 1500px; background-color:cornsilk; height: 50px;">强强科技集团-v1.5版本</h1>
2、Jenkins配置
#先通过源码管理拉取代码。然后在执行构建中的脚本发布内容。所以不会导致没有对应的项目

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-N5qZcHti-1689159048219)(E:\教学资料\※笔记※\复习\assets\image-20230710171358519.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6bsdTJoj-1689159048220)(E:\教学资料\※笔记※\复习\assets\image-20230710174745727.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WNZJRSDU-1689159048220)(E:\教学资料\※笔记※\复习\assets\image-20230710181341445.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rPQn9ITR-1689159048221)(E:\教学资料\※笔记※\复习\assets\image-20230710181402371.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uybjCHFA-1689159048222)(E:\教学资料\※笔记※\复习\assets\image-20230710181445376.png)]

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

运维神经科主任

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值