百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

手把手教你使用 Jenkins+Docker 实现持续集成

bigegpt 2025-07-02 18:25 5 浏览

作者:乐之终曲
来源:https://blog.csdn.net/qq_37143673/

对于 Jenkins 我只能用两个字形容,难用。就不过多吐槽了,本篇是基于 docker 环境的使用。

1.安装

寻找需要的 Jenkins 镜像:

https://hub.docker.com/r/jenkinsci/blueocean

docker pull jenkinsci/blueocean

我选择的镜像是 Jenkins-blueocean Jenkins 海洋版,为什么选这个?

  • 踩坑:普通的 Jenkins 在部署的时候不少人都遇到过,插件下不下来,但是在海洋版没有这个问题(最主要原因)
  • blueocean 的页面更加人性化,流程的监控上看着让人舒服的多,当然普通 Jenkins 也可以通过安装插件添加这个功能

启动镜像

docker run 
--name jenkinsci-blueocean -u root 
--rm -d -p 7005:8080 -p 50000:50000 
-v /data/jenkins:/var/jenkins_home 
-v /var/run/docker.sock:/var/run/docker.sock jenkinsci/blueocean
  • -u root:以 root 权限启动,防止出现权限问题
  • -p 7005:8080:端口映射,服务器的 7005 端口映射容器的 8080 端口
  • -p 50000:50000:Jenkins代理默认通过TCP端口50000与Jenkins主机通信
  • -v /data/jenkins:/var/jenkins_home:把容器内的 Jenkins 目录挂载到服务器的 /data/jenkins 目录以防容器没了,数据也没了
  • -v /var/run/docker.sock:/var/run/docker.sock:保证容器内的 docker 与 服务器上 docker 的通讯

附带下删除 jenkinsci/blueocean 容器

# 删除对应绑定网桥
docker network disconnect --force bridge jenkinsci-blueocean
# 删除 jenkinsci-blueocean 容器,xxxx 容器 ID
docker rm -f xxxx

输入密码进入

由于我们挂载映射到服务器,所以可以直接通过服务器路径找密码

cat /data/jenkins/secrets/initialAdminPassword

或者直接通过容器日志可以看到密码:docker logs xxxx(容器 ID)

接下来,我选择推荐插件安装

创建第一个账号,我用的 root 123456

然后完成安装,由于是用的是镜像,所以安装起来非常的简单,海洋版也没有出现插件无法下载的问题

2.创建项目与持续集成

踩坑PS:为什么说难用,就是在这。一开始我是把 jdk 和 maven 也挂载到容器里的,但是配置完全局变量后,根本无法使用,可能是容器内也要配置好这些才行,我就搞不懂容器内配了那还要专门配个全局环境变量干啥。。。自动安装也是完全没用,所以我放弃了,用我自己的方法进行持续集成部署。

接下来配置项目,选择流水线

配置

这里我们通过 webhook,让项目提交后,自动调用钩子函数进行部署,进行持续集成

配置构建触发器,也就是钩子函数

身份验证令牌自己写的,所以这里钩子函数的路径就是

http://127.0.0.1:7005/job/spring-cloud/build?token=123456

PS:身份验证令牌框下面就是钩子函数的请求路径说明,不太明白的,可以自己看看,我上面给的这个是示例

配置项目

公私密钥的可参考:

https://blog.csdn.net/weixin_41235146/article/details/81780894

然后保存,这里暂时就配好了

root 创建 API token

记住这串 token,后面要和钩子函数一起使用,离开这个页面后再进入就看不到这串 token 了

系统管理 => 全局安全配置

PS踩坑:这里不配置的话,后面钩子函数的请求都会 403 失败

接下来配置钩子函数的请求了,这里以 gitee 为例

进入项目 => 管理 => WebHook

请求历史可以看到请求成功 201

先说下本人用于测试的这个项目是父子项目,打包时候把每个子项目打成 jar 包,然后通过 Dockerfile 生产 docker 镜像,然后启动镜像生成容器,这就是我的部署流程

项目根目录下新增 Jenkinsfile

PS踩坑:由于 maven 配置不成功,我也不想进容器配置 maven,因为服务器才 1G ,进容器就死机了,所以我改了依赖 maven 镜像部署,然后再通过另一个任务把 jar 包生成镜像,因为 maven 容器里没有 docker 环境

先 pull 个 maven 镜像,以及在构建镜像时候所需要的 jdk8 的镜像

# maven 用于 Jenkins 构建有 maven 环境的容器
docker pull maven
# jdk8 的镜像用于 Dockerfile 中设置构建拥有 jdk8 环境镜像的基础镜像
docker pull kdvolder/jdk8
  • image 'docker.io/maven':基于这个镜像生成容器部署,所以环境有 maven 环境
  • args 中 -v /root/.m2:/root/.m2:把依赖挂载导服务器上,不用每次打包都下依赖
  • PS:首先,你要知道这个流程是如何进行的,在你根据下的那个 maven 镜像去打包时,由于内外 docker 建立了通讯,所有服务器的 docker 就会生成一个你 maven 的容器,而你的命令都会在这个容器里进行,所以这里挂载就能直接把 maven 这个临时容器里的依赖挂载到服务器上,打包的过程中,你用 docker ps 是可以看到这个 maven 容器的
  • args 中 -v /data/maven/apache-maven-3.6.0/conf/settings.xml:/root/.m2/settings.xml:阿里环境配置挂进去
  • PS踩坑:这里注意,挂载进去的 settings.xml 文件必须放在 .m2 文件夹下,不是放在 maven 的 conf 下面,那样不会生效
  • --entrypoint=:配置下好像就不会打开进入容器了,没深入研究
  • ${env.WORKSPACE}:工作空间路径
  • ${env.NODE_NAME}:进行的分支

Jenkins 内置环境变量可参考:

https://www.cnblogs.com/puresoul/p/4828913.htm

可以看到,我这部署先判度为 master 分支的情况下,package 任务中调用脚本进行打包,build 任务下调用脚本部署

下面贴下这两个脚本,大伙可以参考下

package-prod.sh

#!/bin/sh
#进入文件根目录
#cd "$WORKSPACE"
#项目打包
mvn clean install package '-Dmaven.test.skip=true'

build-prod.sh

我写配置喜欢统一性配置,后面改起来简单,上面参数换下下面都不需要改,这里我的文件夹名,镜像名和生产的 jar 名都用一样的也是这个目的

打包成功,这画面看的好看不少

相关推荐

如何使用Java API操作HDFS系统?(hdfs java api的常见环境准备?)

1.搭建项目环境打开Eclipse选择FileàNewàMavenProject创建Maven工程,选择“Createasimpleproject”选项,点击【Next】按钮,会进入“New...

DataX写插件开发-集成阿里云RocketMQ

在上一期我们对datax进行了技术调研DataX数据异构、数据同步神器,这一次我们集成一个RocketMQ写插件,能够非常方便对将mysql数据同步到MQ中,下面来总结下具体步骤。1.下载datax源...

以SpringMVC+Shiro+Mybatis为核心开发的精简后台系统源码分享

项目说明源码获取方式:关注转发之后私信回复【源码】即可免费获取到以SpringMVC+Shiro+Mybatis为核心开发的精简后台基础系统。包含用户管理,角色管理,部门管理,权限管理,菜单管理,日志...

手把手教小伙伴们使用 Nginx 部署 TienChin 项目!

今天我就来手把手教小伙伴们部署TienChin项目,一起把这个项目跑起来,看看到底是个什么样的项目。小伙伴们知道,对于这种前后端分离的项目,我们在实际部署的时候,可以按照前后端分离的方式来部署,也...

推荐一款超棒的SpringCloud 脚手架项目

之前接个私活,在网上找了好久没有找到合适的框架,不是版本低没人维护了,在不就是组件相互依赖较高。所以我自己搭建一个全新spingCloud框架,里面所有组件可插拔的,集成多个组件供大家选择,喜欢哪个用...

SpringCloud 微服务迁移到 Kubernetes 容器化完整流程

k8s容器部署流程具体步骤:第一步:熟悉SpringCloud微服务项目第二步:源代码编译构建第三步:构建项目镜像并推送到镜像仓库第四步:K8s服务编排第五步:部署服务所需的基础环境第六步:部署微服...

SpringBoot 实现动态配置及项目打包部署上线

一、动态配置文件我们需要了解Spring动态指定配置文件的方式,来提高我们的部署效率。1.1、概述在实际企业开发中,开发环境、测试环境、生产环境通常采用不同的数据库等中间件的连接方式。如果此时我们按照...

3.5 源码安装ONOS1.3.0(源码包怎么安装)

ONOS是由ON.Lab使用Java及Apache实现发布的首款开源的SDN网络操作系统,主要面向服务提供商和企业骨干网。近日笔者在学习ONOS的过程中写下了这篇文章,希望可以对刚接触ONOS的同学们...

jenkins+gitlab 实现自动化部署(jenkins配置git自动部署)

目录1、安装jdk,要记住安装路径2、安装maven,要记住安装路径3、安装git,要记住安装路径4、安装gitlab5、安装jenkins(centos7)创建安装目录下载通用war包启动和关闭Je...

CI&CD落地实践6-Jenkins接入maven构建后端springboot项目

前言在前面一篇《CI&CD落地实践5-Jenkins分布式环境搭建及多节点运行》中,我们介绍了如何在Windows及Linux系统上部署Jenkins从节点,本章节介绍如何在Jenkins创建mave...

从0到1体验Jenkins+Docker+Git+Registry实现CI自动化发布

阅读目录:一、前言二、发布流程三、环境准备四、部署思路梳理五、三台机器上操作六、Git机器上操作七、Docker机器上操作八、Jenkins机器上操作九、上传JAVA项目代码到Git仓库十、Jenki...

微服务架构实战:使用Jenkins实现自动化构建

使用Jenkins实现自动化构建一个大型平台的微服务架构设计通常会产生很多项目工程,因此会有很多服务和应用需要部署,并且需要不断地迭代和更新,这是一个庞大的工程,所以我们需要借助自动化工具,实现各个微...

Jenkins 自动化部署实例讲解(jenkins自动化部署git 项目)

前言你平常在做自己的项目时,是否有过部署项目太麻烦的想法?如果你是单体项目,可能没什么感触,但如果你是微服务项目,相信你应该是有过这种感触的。这种情况下,我一般会劝你了解一下Jenkins这个玩意...

多模块的微服务项目容器化与Git追踪发布记录

在使用了微服务后,一个项目往往由多个模块组成,而容器化发布的建议是单个容器尽量只运行单个进程。所以我们会把每个模块单独打包成镜像运行。如果每个模块都单独配置Dockerfile会让我们维护起来很麻烦。...

手把手教你使用 Jenkins+Docker 实现持续集成

作者:乐之终曲来源:https://blog.csdn.net/qq_37143673/对于Jenkins我只能用两个字形容,难用。就不过多吐槽了,本篇是基于docker环境的使用。1.安...