Jenkins 与 Gitlab 之间非交互拉取代码并进行代码部署

一、Jenkins 设置基于 ssh key 拉取代码

1.1 Jenkins 获取公钥

# Jenkins服务器生成密钥
root@jenkins-master:~# ssh-keygen
# 查看公钥
root@jenkins-master:~# cat .ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDgcESRqkOgXDIM6DyHs9ouyYYdLWBH0SsScMifVI/yoa39xeMUZPzu+DMPp43RJHN9rGyIXIYg3Fr5jeoQ2N4ko37a3MwF0F2oMAInZY5WVprvDY28P+bIEzp4lzr6pmsg5qUpG01vzIVkPzv/ItKwe1Gpfwfz7Hie8qrrorHkfFe/3T3u2xy8296c3tDJXqkutqsmDCPCH555pDCXB9P0N4DV23HDQGzHIfxzrVqk4GZoLNf0Qq8qohOOsMUIYcgJRfTfHrMH9SQZM749E6Z/Uw3/xK6yJs8gVn/kb7auVSDtH3xxUwfsYmNGBXaO3qddYv7FCHDT+lSn85GRmhGt root@jenkins-master

1.2 Gitlab 粘贴 Jenkins 公钥

在这里插入图片描述

1.3 测试 ssh key

# 实现免密码拉取代码
root@jenkins-master:~# git clone git@10.0.0.31:lcklck/app1.git
Cloning into 'app1'...
remote: Enumerating objects: 9, done.
remote: Counting objects: 100% (9/9), done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 9 (delta 0), reused 0 (delta 0), pack-reused 0
Receiving objects: 100% (9/9), done.

二、配置 Jenkins 到 Gitlab 非交互拉取代码

2.1 在 Jenkins 添加 Jenkins 自身服务器私钥

选择一个项目,再选择配置
在这里插入图片描述
在这里插入图片描述
查看Jenkins服务器的私钥,然后粘贴到Jenkins上

root@jenkins-master:~# cat .ssh/id_rsa

在这里插入图片描述

2.2 配置 git 项目地址和用户

在这里插入图片描述
在这里插入图片描述

2.3 测试构建项目并将新代码推送到后端服务器

拉取 app1 下文件到 Jenkins 上(/var/lib/jenkins/workspace/python-app1/)
在这里插入图片描述

root@jenkins-master:~# ls /var/lib/jenkins/workspace/python-app1/
index.html

修改构建执行的代码
在这里插入图片描述
模拟代码修改

root@jenkins-master:/opt# git clone http://10.0.0.31/lcklck/app1.git
Cloning into 'app1'...
Username for 'http://10.0.0.31': root
Password for 'http://root@10.0.0.31':
remote: Enumerating objects: 9, done.
remote: Counting objects: 100% (9/9), done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 9 (delta 0), reused 0 (delta 0), pack-reused 0
Unpacking objects: 100% (9/9), done.
root@jenkins-master:/opt# vim /opt/app1/index.html
<h1>v111</h1>
<h1>v222</h1>
<h1>v333</h1>
root@jenkins-master:/opt# cd app1/
root@jenkins-master:/opt/app1# git config --global user.name laomao
root@jenkins-master:/opt/app1# git config --global user.email "laomao@qq.com"
root@jenkins-master:/opt/app1# git add .
root@jenkins-master:/opt/app1# git commit -m "v3 version"
[master 3f721f0] v3 version
 1 file changed, 1 insertion(+)
root@jenkins-master:/opt/app1# git push
Username for 'http://10.0.0.31': root
Password for 'http://root@10.0.0.31':
Counting objects: 3, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 294 bytes | 294.00 KiB/s, done.
Total 3 (delta 0), reused 0 (delta 0)
To http://10.0.0.31/lcklck/app1.git
   1b55c84..3f721f0  master -> master

通过Jenkins点击立即构建,将代码部署至后端服务器
在这里插入图片描述
页面更新成功
在这里插入图片描述
进一步优化,Jenkins构建只执行shell脚本,bash命令放置到服务器,避免开发者去修改命令

root@jenkins-master:/opt/app1# mkdir /data/script/lck/python-app1_deploy.sh -p
root@jenkins-master:/opt/app1# chmod a+x /data/script/lck/python-app1_deploy.sh
root@jenkins-master:/opt/app1# vim /data/script/lck/python-app1_deploy.sh
#!/bin/bash
cd /var/lib/jenkins/workspace/python-app1/
tar czvf code.tar.gz ./index.html
scp code.tar.gz tomcat@10.0.0.37:/data/tomcat/tomcat_appdir/
scp code.tar.gz tomcat@10.0.0.38:/data/tomcat/tomcat_appdir/
scp code.tar.gz tomcat@10.0.0.39:/data/tomcat/tomcat_appdir/
ssh tomcat@10.0.0.37 "/etc/init.d/tomcat.sh stop && rm -rf /data/tomcat/tomcat_webapps/myapp/* && cd /data/tomcat/tomcat_appdir/ && tar xvf code.tar.gz -C /data/tomcat/tomcat_webapps/myapp/ && /etc/init.d/tomcat.sh start"
if [ $? = 0 ];then
    ssh tomcat@10.0.0.38 "/etc/init.d/tomcat.sh stop && rm -rf /data/tomcat/tomcat_webapps/myapp/* && cd /data/tomcat/tomcat_appdir/ && tar xvf code.tar.gz -C /data/tomcat/tomcat_webapps/myapp/ && /etc/init.d/tomcat.sh start"
    ssh tomcat@10.0.0.39 "/etc/init.d/tomcat.sh stop && rm -rf /data/tomcat/tomcat_webapps/myapp/* && cd /data/tomcat/tomcat_appdir/ && tar xvf code.tar.gz -C /data/tomcat/tomcat_webapps/myapp/ && /etc/init.d/tomcat.sh start"
else
    return 1
fi

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值