Jenkins 环境搭建---基于 Docker
前期准备
提前安装jdk、maven、nodeJs(如果需要的话)
创建 jenkins 环境目录,用来当做挂载卷
/data/jenkins/
一:拉取 Jenkins 镜像
docker pull jenkins/jenkins:lts
二:设置 Jenkins挂载目录
mkdir -p ~/jenkins_home
sudo chown 1000:1000 ~/jenkins_home
三:启动 Jenkins 容器
docker run -p 80:8080 -p 81:50000 \--restart always \-e JAVA_OPTS="-Djava.io.tmpdir=/xxxx/tmp" \-v /data/jenkins/tmp:/xxxx/tmp \ -v /data/jenkins/data:/var/jenkins_home\-v /data/jenkins/apache-maven-3.8.8/:/opt/maven/apache-maven-3.8.8 \-v /data/jenkins/repository:/opt/maven/repository \-v /data/jenkins/jdk1.8.0_431:/opt/jdk/jdk1.8.0_431 \-v /data/jenkins/node-v18.18.0-linux-x64:/opt/node/node-v18.18.0-linux-x64 \-v /var/run/docker.sock:/var/run/docker.sock \-v /usr/bin/docker:/usr/bin/docker \-v /etc/localtime:/etc/localtime \--name jenkins \-d jenkins/jenkins:lts
1. 端口映射
-p 80:8080 -p 81:50000
-p 80:8080:将主机的 80 端口映射到容器的 8080 端口,这通常是 Jenkins 的 Web 界面端口。-p 81:50000:将主机的 81 端口映射到容器的 50000 端口,这是 Jenkins 用于节点通信的端口。
2. 重启策略
--restart always
--restart always:确保容器在崩溃或重启后自动重启。此设置适用于生产环境中的容器,确保容器始终运行。
3. 环境变量
-e JAVA_OPTS="-Djava.io.tmpdir=/xxxx/tmp"
-e JAVA_OPTS="-Djava.io.tmpdir=/xxxx/tmp":设置 Java 启动参数,指定临时文件目录为 /xxxx/tmp。这对于自定义 Jenkins 临时文件存储位置很有用。
4. 挂载卷
-v /data/jenkins/tmp:/xxxx/tmp
-v /data/jenkins/data:/var/jenkins_home
-v /data/jenkins/apache-maven-3.8.8/:/opt/maven/apache-maven-3.8.8
-v /data/jenkins/repository:/opt/maven/repository
-v /data/jenkins/jdk1.8.0_431:/opt/jdk/jdk1.8.0_431
-v /data/jenkins/node-v18.18.0-linux-x64:/opt/node/node-v18.18.0-linux-x64
-v /var/run/docker.sock:/var/run/docker.sock
-v /usr/bin/docker:/usr/bin/docker
-v /etc/localtime:/etc/localtime
-v /data/jenkins/tmp:/xxxx/tmp:将宿主机/data/jenkins/tmp目录挂载到容器中的/xxxx/tmp,用于存储临时文件。-v /data/jenkins/data:/var/jenkins_home:将宿主机 Jenkins 数据存储目录/data/jenkins/data挂载到容器中的 Jenkins 主目录/var/jenkins_home,用于持久化 Jenkins 配置和数据。-v /data/jenkins/apache-maven-3.8.8/:/opt/maven/apache-maven-3.8.8:将 Maven 版本 3.8.8 的目录挂载到容器中,使 Jenkins 使用宿主机上的 Maven。-v /data/jenkins/repository:/opt/maven/repository:将宿主机上的 Maven 本地仓库挂载到容器中的相应路径。-v /data/jenkins/jdk1.8.0_431:/opt/jdk/jdk1.8.0_431:将宿主机上的 JDK 1.8 挂载到容器中,确保 Jenkins 使用正确的 JDK。-v /data/jenkins/node-v18.18.0-linux-x64:/opt/node/node-v18.18.0-linux-x64:将 Node.js 18.x 挂载到容器中,使 Jenkins 可以使用此版本的 Node.js。-v /var/run/docker.sock:/var/run/docker.sock:使容器能够与宿主机上的 Docker 守护进程通信,允许 Jenkins 运行 Docker 容器。-v /usr/bin/docker:/usr/bin/docker:将宿主机的 Docker 二进制文件挂载到容器中,以便 Jenkins 使用宿主机的 Docker 运行命令。-v /etc/localtime:/etc/localtime:同步容器的时间与宿主机的时间。
四:Jenkins 相关配置
1. 解锁 Jenkins
首次登录 Jenkins 控制台时,你需要解锁 Jenkins,通常会显示一个页面提示你输入解锁密钥。
- 步骤:
- 查找解锁密钥文件,通常文件位于宿主机的
/var/jenkins_home/secrets/initialAdminPassword。 - 可以通过以下命令查看密钥:
cat /data/jenkins/data/secrets/initialAdminPassword
- 查找解锁密钥文件,通常文件位于宿主机的
2. 安装推荐插件
解锁后,Jenkins 会引导你选择是否安装推荐的插件,建议选择安装 推荐插件,它包括许多常用的插件,如 Git、Maven 等。
- 步骤:
- 在解锁后页面中选择
Install suggested plugins,Jenkins 会自动下载并安装所有推荐插件。
- 在解锁后页面中选择
3. 创建管理员用户
在安装完插件后,Jenkins 会让你创建一个管理员用户。
- 步骤:
- 填写管理员用户名、密码、全名和电子邮件地址。
- 如果不想创建用户,可以选择
Continue as Admin(以管理员身份继续)。
4. 配置系统设置
接下来,你可以配置 Jenkins 的一些全局系统设置,包括 JDK、Maven 和 Node.js 等工具的路径。
配置 JDK
- 进入 Jenkins 控制台,点击
Manage Jenkins(管理 Jenkins)。 - 选择
Global Tool Configuration(全局工具配置)。 - 在 JDK 部分,配置你在 Docker 中挂载的 JDK 1.8 路径:
- JDK name:给 JDK 取个名字,比如
jdk1.8。 - JAVA_HOME:填写 JDK 路径,例如
/opt/jdk/jdk1.8.0_431。
- JDK name:给 JDK 取个名字,比如
- 点击保存。
配置 Maven
- 在 Global Tool Configuration 页面,找到 Maven 部分。
- 配置你挂载的 Maven 3.8.8 目录:
- Maven name:可以设为
maven3.8.8。 - MAVEN_HOME:填写 Maven 的路径,例如
/opt/maven/apache-maven-3.8.8。
- Maven name:可以设为
- 点击保存。
配置 Node.js
- 在 Global Tool Configuration 页面,找到 NodeJS 部分。
- 配置你挂载的 Node.js 版本:
- Name:可以设为
node-v18.18.0。 - NodeJS installation directory:填写 Node.js 路径,例如
/opt/node/node-v18.18.0-linux-x64。
- Name:可以设为
- 点击保存
5. 配置 Jenkins 插件
根据你的需求,你可能需要安装一些特定的插件,下面是常见的一些插件配置:
安装常用插件
你可以在 Manage Jenkins -> Manage Plugins 中安装以下插件:
- Git Plugin:用于 Git 仓库的集成。
- Docker Plugin:如果你打算在 Jenkins 中运行 Docker 容器。
- Maven Integration Plugin:用于支持 Maven 构建。
- NodeJS Plugin:支持 Node.js 构建。
配置 Docker 插件
- 在 Manage Jenkins -> Configure System 中找到 Docker 配置部分。
- 在 Docker Hosts 部分,添加 Docker 主机连接配置,通常配置如下:
- Docker Host URI:
unix:///var/run/docker.sock(这是你在docker run命令中挂载的路径)。 - 点击 Test Connection 测试连接是否成功
- Docker Host URI:
6:创建连接Git 凭据,用于拉取代码用

五:创建任务
1:点击 Dashboard 新视图
比如开发环境视图

2:点击 Dashboard 新建任务
新建后端maven任务

3:选择git凭据

4:选择代码url和分支
6:代码构建完成后,执行相关shell
根据每个项目不同,执行不同的命令
比如传统服务直接执行 java -jar 等命令直接启动服务
比如K8S、Docker这种云服务,可写打包镜像、推送镜像到 Docker 仓库、执行k8s相关命令拉取镜像进行容器启动等

然后点击完成
7:构建代码
右键找到刚才新建的任务,即可进行构建

相关文章:
Jenkins 环境搭建---基于 Docker
前期准备 提前安装jdk、maven、nodeJs(如果需要的话) 创建 jenkins 环境目录,用来当做挂载卷 /data/jenkins/ 一:拉取 Jenkins 镜像 docker pull jenkins/jenkins:lts 二:设置 Jenkins挂载目录 mkdir -p ~/jen…...
如何在自定义组件中使用v-model实现双向绑定
在 Vue 2 中,v-model 是双向数据绑定的语法糖,它默认将 value 作为 prop 传入组件,并通过监听 input 事件来更新父组件的数据。若要在自定义组件中实现 v-model 的双向绑定,需遵循以下步骤: 1. 基本实现:va…...
Ubuntu 下 nginx-1.24.0 源码分析 - ngx_pool_t 类型
ngx_pool_t 定义在 src/core/ngx_core.h typedef struct ngx_pool_s ngx_pool_t; ngx_pool_s 定义在 src/core/ngx_palloc.h struct ngx_pool_s {ngx_pool_data_t d;size_t max;ngx_pool_t *current;ngx_chain_t *chain;ng…...
如何在 ubuntu 上使用 Clash 与 docker 开启代理拉起
如何在 ubuntu 上使用 Clash https://github.com/doreamon-design/clash/releases上面是clash 的地址 clash_2.0.24_linux_386.tar.gz 下载 386 的 如果你的电脑是inter tar -xzvf clash_2.0.24_linux_386.tar.gz 启动 ./clash 然后会在电脑上生成一个config的文件 /home/xxx/…...
linux tcpdump抓包
参数说明: -i 指定网卡 -w 指定保存文件 -s0 完整抓包 -G 指定间隔时长(秒) -C 指定每个文件大小(M) 用法1: 指定端口输出到指定文件 tcpdump -i em3 -w 182910.pcap 用法2: 指定端口每10分钟输出到不同文件 tcpdump -i em3 -s0 -G 600 -w %Y_%m%d_%H%M_%S.pcap 用法3: 指…...
PLSQL连接Oracle 19c报错ORA-28040
PLSQL连接Oracle 19c报错ORA-28040 原因解析解决办法原因解析 使用PLSQL Developer连接19c数据库报错: ORA-28040: No matching authentication protocol报错信息解析: [oracle@ora19c ~]$ oerr ora 2804028040, 0000, "No matching authentication protocol" /…...
汽车免拆诊断案例 | 2010 款路虎揽胜车空调偶尔出风异常
故障现象 一辆2010款路虎揽胜车,搭载5.0 L发动机,累计行驶里程约为16万km。车主反映,接通空调开关后,有时出风忽大忽小,有时不出风,有时要等2 min左右才出风;有时两三天出现一次,…...
音视频入门基础:RTP专题(9)——FFmpeg接收RTP流的原理和内部实现
一、引言 由《音视频入门基础:RTP专题(2)——使用FFmpeg命令生成RTP流》可以知道,推流端通过下面FFmpeg命令可以将一个媒体文件转推RTP,生成RTP流: ffmpeg -re -stream_loop -1 -i input.mp4 -vcodec cop…...
Nginx 安装及配置教程(Windows)【安装】
文章目录 一、 Nginx 下载 1. 官网下载2. 其它渠道 二、 Nginx 安装三、 配置四、 验证五、 其它问题 1. 常用命令2. 跨域问题 软件 / 环境安装及配置目录 一、 Nginx 下载 1. 官网下载 安装地址:https://nginx.org/en/download.html 打开浏览器输入网址 htt…...
《跟李沐学 AI》AlexNet论文逐段精读学习心得 | PyTorch 深度学习实战
前一篇文章,使用 AlexNet 实现图片分类 | PyTorch 深度学习实战 本系列文章 GitHub Repo: https://github.com/hailiang-wang/pytorch-get-started 本篇文章内容来自于学习 9年后重读深度学习奠基作之一:AlexNet【下】【论文精读】】的心得。 《跟李沐…...
嵌入式0xDEADBEEF
在嵌入式系统中,0xDEADBEEF 是一个常见的“魔数”(magic number),通常用于调试和内存管理。它的含义和用途如下: 1. 调试用途 未初始化内存的标记:在调试时,0xDEADBEEF 常用于标记未初始化或已…...
B+树作为数据库索引结构的优势对比
MySQL作为数据库,它的功能就是做数据存储和数据查找;使用B树作为索引结构是为了实现高效的查找、插入和删除操作。 B树的查找、插入、删除的复杂度都为 O(log n),它是一个多叉树的结构,能兼顾各种操作的效率的数据结构。如果使用…...
自适应SQL计划管理(Adaptive SQL Plan Management)在Oracle 12c中的应用
在Oracle Database 12c Release 1 (12.1)版本中,引入了对SQL计划管理(SPM)功能的增强,特别是关于SQL计划基线的自动进化机制。这一改进允许数据库更加智能地管理和优化SQL查询的执行计划,确保即使数据分布发生变化&…...
什么是DeFi (去中心化金融)
DeFi (去中心化金融) 概述 💰 1. DeFi 基础概念 1.1 什么是 DeFi? DeFi 是建立在区块链上的金融服务生态系统,它: 无需中心化中介开放且透明无需许可即可参与代码即法律 1.2 DeFi 的优势 开放性:任何人都可以参与…...
计算机毕业设计Python农产品推荐系统 农产品爬虫 农产品可视化 农产品大数据(源码+LW文档+PPT+讲解)
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
LLM论文笔记 15: Transformers Can Achieve Length Generalization But Not Robustly
Arxiv日期:2024.2.14机构:Google DeepMind / University of Toronto 关键词 长度泛化位置编码数据格式 核心结论 1. 实验结论:十进制加法任务上的长度泛化最佳组合: FIRE位置编码 随机化位置编码 反向数据格式 索引提示&…...
SpringAI做对了什么
开发|界面|引擎|交付|副驾——重写全栈法则:AI原生的倍速造应用流 你好,这里是nine[谈架构]系列。 欢迎关注评论私信交流~ SpringAI 在 AI 编程领域延续了Spring的诸多优势,从易于集成、到通用…...
DeepSeek预测25考研分数线
25考研分数马上要出了。 目前,多所大学已经陆续给出了分数查分时间,综合往年情况来看,每年的查分时间一般集中在2月底。 等待出成绩的日子,学子们的心情是万分焦急,小编用最近爆火的“活人感”十足的DeepSeek帮大家预…...
C++笔记之标准库中的std::copy 和 std::assign 作用于 std::vector
C++笔记之标准库中的std::copy 和 std::assign 作用于 std::vector code review! 文章目录 C++笔记之标准库中的std::copy 和 std::assign 作用于 std::vector1. `std::copy`1.1.用法1.2.示例2.`std::vector::assign`2.1.用法2.2.示例3.区别总结4.支持assign的容器和不支持ass…...
文件IO(20250217)
1. 文件IO 系统调用Linux内核提供的文件操作接口 1. 打开文件 open 2. 读写文件 read/write 3. 关闭文件 close 1.1 open函数 #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h>int open(const char *pathname, int flags); int ope…...
CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型
CVPR 2025 | MIMO:支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题:MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者:Yanyuan Chen, Dexuan Xu, Yu Hu…...
centos 7 部署awstats 网站访问检测
一、基础环境准备(两种安装方式都要做) bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats࿰…...
基于SpringBoot在线拍卖系统的设计和实现
摘 要 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统,主要的模块包括管理员;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...
Linux 中如何提取压缩文件 ?
Linux 是一种流行的开源操作系统,它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间,使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的,要在 …...
android13 app的触摸问题定位分析流程
一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...
从面试角度回答Android中ContentProvider启动原理
Android中ContentProvider原理的面试角度解析,分为已启动和未启动两种场景: 一、ContentProvider已启动的情况 1. 核心流程 触发条件:当其他组件(如Activity、Service)通过ContentR…...
关于easyexcel动态下拉选问题处理
前些日子突然碰到一个问题,说是客户的导入文件模版想支持部分导入内容的下拉选,于是我就找了easyexcel官网寻找解决方案,并没有找到合适的方案,没办法只能自己动手并分享出来,针对Java生成Excel下拉菜单时因选项过多导…...
鸿蒙HarmonyOS 5军旗小游戏实现指南
1. 项目概述 本军旗小游戏基于鸿蒙HarmonyOS 5开发,采用DevEco Studio实现,包含完整的游戏逻辑和UI界面。 2. 项目结构 /src/main/java/com/example/militarychess/├── MainAbilitySlice.java // 主界面├── GameView.java // 游戏核…...
海云安高敏捷信创白盒SCAP入选《中国网络安全细分领域产品名录》
近日,嘶吼安全产业研究院发布《中国网络安全细分领域产品名录》,海云安高敏捷信创白盒(SCAP)成功入选软件供应链安全领域产品名录。 在数字化转型加速的今天,网络安全已成为企业生存与发展的核心基石,为了解…...
boost::filesystem::path文件路径使用详解和示例
boost::filesystem::path 是 Boost 库中用于跨平台操作文件路径的类,封装了路径的拼接、分割、提取、判断等常用功能。下面是对它的使用详解,包括常用接口与完整示例。 1. 引入头文件与命名空间 #include <boost/filesystem.hpp> namespace fs b…...
