Jenkins+gitlab实现自动化部署

这篇具有很好参考价值的文章主要介绍了Jenkins+gitlab实现自动化部署。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、关于Jenkins

Jenkins介绍

Jenkins 是一个用 Java 编写的开源自动化工具,带有用于持续集成的插件。用于持续构建和测试您的软件项目,从而使开发人员更容易将更改集成到项目中,并使用户更容易获得新的构建。它还允许您通过与大量测试和部署技术集成来持续交付软件。
Jenkins 集成了各种开发生命周期过程,包括构建、文档、测试、打包、模拟、部署、静态分析等等。
Jenkins 借助插件实现了持续集成。插件允许集成各种 DevOps 阶段。如果要集成特定工具,则需要安装该工具的插件。例如 Git、Maven、Node 项目等。

Jenkins工作流程

image.png

  1. 开发者在本地开发,然后提交到 Source Respository 中,
  2. 触发 GitHub 或者 GitLab 配置的钩子函数程序,继而通知 Jenkins
  3. Jenkins 收到通知,会通过 Git/SVN 插件,重新从项目配置中的代码仓库中拉取最新代码,放置于 Workspace (Jenkins 存放任务的目录)
  4. 之后重新触发构建任务,Jenkins 有很多的构建的插件,Java 常用的 Maven 、Gradle,前端的 Node 等
  5. 如果有安装发送邮件的插件并且进行了配置,那么可以在项目中进行配置,构建失败或者成功都可以选择是否给开发者发送邮件
  6. 构建成功后,Jenkins 会通过一个 SSH 插件,来远程执行 Shell 命令,发布项目,在项目中可以配置多台服务器,也就可以一次性部署到多台服务器上去。
  7. 当然很多时候,构建成功后,并不会直接部署到服务器上,而是打包到另外一台服务器上存储(应用服务器)或者存储为软件仓库中的一个新版本。

关于持续集成和持续部署

持续集成:CI 是一种开发实践,其中开发人员一天几次将代码集成到共享存储库中。当有人将新代码推送到共享存储库中时,测试会在非开发人员(测试人员)的计算机上自动运行。这种纯手动的构建测试,效率非常的低,开发人员必须等待测试人员的反馈后才知道结果,如果错了,还要修改 bug , 这个过程一方面需要沟通成本,另外一方面效率是非常低的.
持续部署:我们都知道,项目最终是会部署到服务器上去,在没用 Jenkins 之前,大都是我们或专业的运维将项目进行部署。如果项目非常多或者部署完后出现 bug,需要人手动的一个个部署或者能力强些的大佬,就是用脚本文件部署,但是看起来还是非常麻烦.

二、Docker部署Jenkins

1.拉取镜像

这里注意,需要拉取 jenkins/jenkins 不能直接拉取 jenkins 会存在插件包找不到的问题;

docker pull jenkins/jenkins:lts

2.启动容器

创建本地映射文件夹

mkdir -p /opt/jenkins/workspace

这里默认把容器内8080端口映射到本地9001端口,8069是我们开发代码的端口,因此我这里也映射出来,不需要可以不用映射

 docker run -uroot -d --restart=always -p 9001:8080 -p 8069:8069\
 -v /opt/jenkins/workspace/:/var/jenkins_home/workspace \
 -v /var/run/docker.sock:/var/run/docker.sock \
 --name jenkins jenkins/jenkins:lts

查看是否启动成功

docker ps

image.png

3.配置Jenkins插件

Jenkins安装成功后通过访问主页即可进行环境配置,如下图所示;

访问主页

地址:http://192.168.1.102:9001/
image.png

查看管理员密码

# 进入jenkins容器
docker exec -it jenkins /bin/bash
# 获取密码
cat var/jenkins_home/secrets/initialAdminPassword

安装插件

选择安装推荐的插件,也可以自定义选择插件(新手不建议),如果第一步拉取的镜像是jenkins这里就会找不到依赖插件;
image.png
等待安装完成:
image.png
这里可以不用设置 点击下面的使用admin账号继续即可
image.png
这是Jenkins主界面:
image.png

配置Jenkins密钥

这里配置密钥的作用是为了取gitlab或其他代码平台拉取代码;
进入到jenkins容器中,执行

# 进入jenkins容器
docker exec -it jenkins  /bin/bash
# 执行生成秘钥,输入后一路回车
ssh-keygen -t rsa -C "root"
# 查看公钥
cat /root/.ssh/id_rsa.pub

image.png
拿到公钥后放到gitlab中,并点击添加密钥按钮
image.png
测试下拉取项目,显示可以拉取成功即可

git clone http://xxxxxx.git

image.png

三、配置Jenkins环境(插件安装、添加凭据、系统配置、全局工具配置)

配置jenkins,点击manager jenkins可以查看到配置中心的设置,点击plugins
image.png

安装Maven插件

image.png

安装SSH插件

image.png
等待安装完成;

添加凭据

凭据就是账号密码,是统一管理账号密码的位置,可以添加gitlab的账号密码,也可以添加服务的用户名密码等;可以根据自己的需要新增和删除;
image.pngimage.pngimage.png
重复再添加服务器的账号和密码凭据image.png
显示效果如下:
image.png

系统配置:

系统配置是为了
image.png
找到两个配置:
1、SSH remote hosts
2、SSH Servers
image.png
image.png

全局工具配置

配置JDK 和MAVEN
docker安装的Jenkins的话JDK使用默认的,Maven在线安装即可
image.png

四、Jenkins部署Maven项目

新建项目

image.pngimage.png

项目配置

通用配置

image.png

源码管理

这里填写我们仓库的地址,票据那里选择我们上面填写的gitlab凭据,也可以自己在添加凭据,指定分支这里要注意,gitlab的分支是*/main 这个和github不一样
image.pngimage.png

构建触发器

在高级里找到generate按钮获取Secret令牌,这个令牌在gitlab设置webHook时需要用到
image.png
image.png

Build

这里添加参数的意思是在编译过程中不执行测试类

clean package -Dmaven.test.skip=true

image.png

Post Steps

这部分的设置是指在jenkins编译打包完成后执行的步骤,我这里执行shell脚本来启动jar包
image.png
image.png
添加构建完成后执行shell脚本:

# 这行代码意思是告诉jenkins不要将这个运行程序自动杀掉
BUILD_ID=dontKillMe
echo "停止已经运行的项目"
# 查找正在运行的程序并kill掉
ps -ef |grep datasimulationsys-0.0.1-SNAPSHOT.jar |grep -v "grep" |grep -v "/bin/sh"|awk '{print $2}'| xargs kill -9
echo "启动新项目"
# 进入到target目录并启动jar包
cd /var/jenkins_home/workspace/fz/target
nohup java -jar datasimulationsys-0.0.1-SNAPSHOT.jar >> aa.txt &
echo "项目启动成功"

五、Gitlab设置webHook

打开gitlab,找到项目-设置-webhook,点击添加webHook,将上面获取到的webHook地址和令牌拿到并粘贴到这里,然后出发来源设置所有分支(这里可以根据实际使用分支来进行设置),如果不是SSL就取消SSL验证,然后点击保存更改,点击测试验证是否通过;
image.pngimage.pngimage.png
点击测试,如果出现200成功则连接成功,如下图所示,然后去jenkins中查看是否进行了构建,
image.png
通过查看Jenkins查看到已经构建成功了:
image.png

六、常见问题

An error occurred during installation: No such plugin: cloudbees-folder

提示报错,因为下载的Jenkins.war里没有cloudbees-folder插件
image.png

正确解决办法

# 拉取这个镜像,不要拉取jenkins镜像就可以了;
docker pull jenkins/jenkins:lts 

其它方法,我使用jenkins镜像后仍然无法解决

下载插件:http://ftp.icm.edu.pl/packages/jenkins/plugins/cloudbees-folder/
选择合适的版本下载并上传到jenkins容器内
将cloudbees-folder.hpi放在/usr/local/tomcatJenkins-8090/webapps/jenkins/WEB-INF/detached-plugins即可,
具体存放的地址可以自行搜索:

 find / -name detached-plugins

然后访问以下地址重启jenkins: http://192.168.1.102:9001/restart
image.png
重启后仍然报错;

Url is blocked: Requests to the local network are not allowed

如果webHook报如下异常:Url is blocked: Requests to the local network are not allowed
那么在gitlab中添加以下设置即可:
接着左侧菜单栏-settings-network-outbound requests,选中 Allow requests to the local network from web hooks and services并保存即可
image.pngimage.png

Hook execution failed: Failed to open TCP connection to xxxx:9001

gitlab无法访问到指定IP和端口,检查网络配置和防火墙设置;文章来源地址https://www.toymoban.com/news/detail-832594.html

到了这里,关于Jenkins+gitlab实现自动化部署的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Jenkins+Maven+Gitlab+Tomcat 自动化构建打包,部署

    1、安装服务 Jenkins工具、环境、插件配置 全局变量配置 Manage JenkinstoolsJDK 安装 安装插件 Deploy to container 安装此插件,才能将打好的包部署到tomcat上     配置国内mvn源 创建maven项目 1  2   3    4    5    6    7    8     9 10  

    2024年02月05日
    浏览(58)
  • Jenkins+GitLab+Docker搭建前端自动化构建镜像容器部署

    前言 🚀 需提前安装环境及知识点: 1、Docker搭建及基础操作 2、DockerFile文件描述 3、Jenkins搭建及基础点 🚀 目的: 将我们的前端项目打包成一个镜像容器并自动发布部署,可供随时pull访问 1、在当前项目的根目录创建Dockerfile文件并写入如下代码: 代码片段详细描述: 注意

    2024年02月05日
    浏览(74)
  • Jenkins+GitLab+Docker搭建前端自动化构建镜像容器部署(无本地证书,映射证书)

    前言 🚀 需提前安装环境及知识点: 1、Docker搭建及基础操作 2、DockerFile文件描述 3、Jenkins搭建及基础点 🚀 目的: 将我们的前端项目打包成一个镜像容器并自动发布部署,可供随时pull访问 1、在当前项目的根目录创建Dockerfile文件并写入如下代码: 代码片段详细描述: 注意

    2024年02月15日
    浏览(60)
  • 2023全网最细最全保姆级gitlab+Jenkins+maven自动化部署springboot项目教程

    如果没有Linux基础请仔细看好每一个步骤,避免出错,从0到1带你搭建自动化部署环境,包括服务器安装,自动化部署所需各类软件安装配置,详细贴出每一步,不断步骤,让你一次搭建部署完成,希望这篇文章能给大家带来一定的帮助,话不多说开始整 2.0 CentOs安装 2.0.1 下载VM虚拟机 我直

    2024年02月08日
    浏览(60)
  • Jenkins自动化部署-GitLab拉取代码 配置ssh代码拉去方式的密钥(公私钥)

    Jenkins想要通过ssh方式拉去gitlab代码,则需要在在Jenkins服务器配置私钥,gitlab服务器配置公钥 使用root用户生成公钥和私钥 在/root/.ssh/目录保存了公钥和使用 id_rsa:私钥文件 id_rsa.pub:公钥文件 把生成的公钥放在Gitlab中 以root账户登录-点击头像-Settings-SSH Keys 复制刚才id_rsa.pu

    2024年04月10日
    浏览(55)
  • Gitlab自动触发jenkins完成自动化构建 jenkins

     首先安装gitlab插件,我已经安装过了,首次请在 可选插件 中进行搜索。   进入项目配置--构建触发器: Build when a change is pushed to GitLab. GitLab webhook URL: 请复制此处的URL,后续有用。  然后点击高级   “Allowed branches”触发分支可以用默认的全部分支,也可以选择仅由指定名

    2024年02月16日
    浏览(63)
  • docker+jenkins 实现自动化部署

    工欲善其事必先利其器,所以前期的准备工作必须做好,那么我们要实现自动化部署,必须提前准备什么呢?哈哈哈,可能有一些小伙伴已经猜到了,我们需要一台自己的服务器,这里博主使用的自己够买一台腾讯云的轻量服务器,折扣完了才一百多块钱,当然小伙伴也可以

    2024年02月06日
    浏览(269)
  • Gitee + Jenkins实现前端自动化部署

    这是在window环境下面实施的,Jenkins安装自己去网上找( 推荐安装最新的版本,旧版本下载插件会有兼容问题 ),Jenkins必备插件Git、gitee、NodeJs(中文插件 Chinese需重启)。以gitee作为代码仓库,需要到仓库中的webHooks作为触发。本文借鉴了Gitee + Jenkins自动化实战 | 大前端 -

    2024年02月04日
    浏览(47)
  • Jenkins+Docker 实现一键自动化部署项目

    1.安装Jenkins 注:因为Jenkins容器里的用户是Jenkins,而主机用户不是Jenkins,就算是root也一样会报错:/var/jenkins_home/copy_reference_file.log: Permission denied,这个时候就需要在主机上面给主机地址赋予访问Jenkins容器的权限,Jenkins内部用的是uid 1000的user。 -privileged=true让容器具有root权限

    2024年02月16日
    浏览(51)
  • Jenkins结合gitlab自动化持续集成

    大家好,我是自动化测试老司机~ 最近在公司有负责搭建自动化测试环境,自动化脚本写好后,毋庸置疑是需要将自动化脚本进行持续集成测试,能够根据企业的定制化需求,通过Jenkins触发执行构建任务,定时执行自动化脚本等,今天就给大家介绍一下Jenkins结合gitlab进行自动

    2024年02月11日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包