使用Jenkins从gitlab拉取代码并部署以及gitlab更新代码后自动构建

本文详细介绍了如何配置Jenkins从Gitlab通过SSH拉取代码,并实现自动化部署。首先,生成SSH密钥对,将公钥添加到Gitlab用户,私钥配置在Jenkins中。接着,设置Jenkins任务,使用Maven打包并利用Publish over SSH插件将jar文件部署到远程服务器。最后,配置构建触发器,使得Gitlab代码变更时能自动触发Jenkins的构建流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用Jenkins从gitlab上拉取代码,使用ssh。

  • 创建Jenkins服务器的SSH密钥对;
  • 为相应的Gitlab用户添加密钥对的公钥,相当于Jenkins拉取代码时,使用的是该Gitlab用户,拥有其相应的代码克隆权限;
  • Jenkins添加密钥对的私钥,实现基于key的连接;
  • 将Gitlab项目的SSH克隆地址配置到相应的Jenkins任务中,在构建时将代码拉取到Jenkins服务器的相应目录,为接下来的测试、部署等操作做好准备。

首先进入Jenkins 容器中

docker exec -it jenkins bash
# 使用 -m PEM ,后面Jenkins使用插件Publish over SSH 不会报错
ssh-keygen -m PEM -t rsa -b 4096
cd ~/.ssh
cat id_rsa.pub
cat id_rsa

将 id_rsa.pub 复制到gitlab中
在这里插入图片描述
将 id_rsa 私钥添加到 Jenkins全局凭证中
在这里插入图片描述
在这里插入图片描述

测试

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

在这里插入图片描述
这时已经将代码成功拉取到jenkins本地了,这样就可以做后续的编译部署操作等等。
在这里插入图片描述
但是如果拉取代码失败!
如下:
在这里插入图片描述
在Jenkins容器中输入:

git  ls-remote -h git@192.168.150.128:xiuyuandashen/hello_world.git HEAD

在这里插入图片描述测试拉取代码
在这里插入图片描述

在这里插入图片描述

实在不行的话,在.ssh目录下添加config
User 为gitlab用户名称,Host gitlab的ip
IDentityFile 为私钥地址
在这里插入图片描述

部署

这时代码已经在jenkins的工作目录下了,我们需要将其编译打包发布到其他服务器上。
首先我们要解决jenkins免密ssh登录部署服务器的问题。
假设我们在 192.168.150.128这台服务器上部署项目。

将Jenkins这台机子的公钥,拷贝到部署服务器上
ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.150.128

然后我们需要将私钥放在Jenkins上,这样Jenkins才能访问控制部署服务器。

在Jenkins中安装 插件Publish over SSH

在这里插入图片描述

安装后,去系统管理=》系统配置中配置它
在这里插入图片描述
在这里插入图片描述
测试一下是否联通
在这里插入图片描述

进入项目的配置
在这里插入图片描述
执行 shell

echo '当前 WORKSPACE 工作目录'
pwd
#'在构建时,默认会直接切换到 workspace 目录,所以可以直接将当前目录中的内容复制给被部署的服务器
# 使用maven 打包
/var/jenkins_home/tools/hudson.tasks.Maven_MavenInstallation/Maven3.8.5/bin/mvn  clean package
# 将打包后的文件拷贝到部署服务器
scp -r ./target/*.jar  root@192.168.150.128:/data/

#echo '登录'
echo '部署'
# 打包运行

下面就是在远程服务器上运行打包后的jar包

在这里插入图片描述

在这里插入图片描述

这个build.sh 脚本是在部署服务器上的

#!/bin/bash
mv /data/*.jar /data/app.jar
echo '部署'
java -jar /data/app.jar --server.port=9099 &

配置完这些后,进行保存。进行构建

在这里插入图片描述

在这里插入图片描述

部署成功!
在这里插入图片描述

构建触发器,当gitlab代码改变后自动部署

首先需要下载 gitlab 插件,下载后就可以在构建触发器看到下面的选项。
在项目设置中构建触发器,这边我们默认 push时进行触发构建。
在这里插入图片描述
在这里插入图片描述
然后去gitlab进行设置

在这里插入图片描述

当报 Urlis blocked: Requests to localhost are not allowed错误时,去下面这边设置即可
在这里插入图片描述
在这里插入图片描述
测试
在这里插入图片描述
在这里插入图片描述

在部署项目时删除原来的文件以及原有的进程再部署

在这里插入图片描述

# 用 && 连接起来,这样不会出现实际上项目已经部署成功,但是Jenkins的构建不会结束的问题,最终会导致构建超时
# NR==1 表示第一行 $2 表示第二列就是 pid

echo '删除原来的文件' && rm -rf *.jar && kill -9  `ps -ef|grep app |awk 'NR==1{print $2}'` && sh /data/build.sh
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值