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
  1. 进入 Jenkins 控制台,点击 Manage Jenkins(管理 Jenkins)。
  2. 选择 Global Tool Configuration(全局工具配置)。
  3. JDK 部分,配置你在 Docker 中挂载的 JDK 1.8 路径:
    • JDK name:给 JDK 取个名字,比如 jdk1.8
    • JAVA_HOME:填写 JDK 路径,例如 /opt/jdk/jdk1.8.0_431
  4. 点击保存。
配置 Maven
  1. Global Tool Configuration 页面,找到 Maven 部分。
  2. 配置你挂载的 Maven 3.8.8 目录:
    • Maven name:可以设为 maven3.8.8
    • MAVEN_HOME:填写 Maven 的路径,例如 /opt/maven/apache-maven-3.8.8
  3. 点击保存。
配置 Node.js
  1. Global Tool Configuration 页面,找到 NodeJS 部分。
  2. 配置你挂载的 Node.js 版本:
    • Name:可以设为 node-v18.18.0
    • NodeJS installation directory:填写 Node.js 路径,例如 /opt/node/node-v18.18.0-linux-x64
  3. 点击保存

5. 配置 Jenkins 插件

根据你的需求,你可能需要安装一些特定的插件,下面是常见的一些插件配置:

安装常用插件

你可以在 Manage Jenkins -> Manage Plugins 中安装以下插件:

  • Git Plugin:用于 Git 仓库的集成。
  • Docker Plugin:如果你打算在 Jenkins 中运行 Docker 容器。
  • Maven Integration Plugin:用于支持 Maven 构建。
  • NodeJS Plugin:支持 Node.js 构建。

配置 Docker 插件

  1. Manage Jenkins -> Configure System 中找到 Docker 配置部分。
  2. Docker Hosts 部分,添加 Docker 主机连接配置,通常配置如下:
    • Docker Host URIunix:///var/run/docker.sock(这是你在 docker run 命令中挂载的路径)。
    • 点击 Test Connection 测试连接是否成功

6:创建连接Git 凭据,用于拉取代码用

五:创建任务

1:点击 Dashboard 新视图

比如开发环境视图

2:点击 Dashboard 新建任务

新建后端maven任务

3:选择git凭据

4:选择代码url和分支

6:代码构建完成后,执行相关shell

根据每个项目不同,执行不同的命令

比如传统服务直接执行 java -jar 等命令直接启动服务

比如K8S、Docker这种云服务,可写打包镜像、推送镜像到 Docker 仓库、执行k8s相关命令拉取镜像进行容器启动等

然后点击完成

7:构建代码

右键找到刚才新建的任务,即可进行构建

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/973761.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

DOS网络安全

ping -t 不间断地ping目标主机,直到用户用ctrlc键强行终止。经常用来排除网络故障 -l 定制ping信息包的容量,最大上限是65500字节 -n 向远程主机发送的数据 包个数,默认是4。 语法: ping 参数 IP地址 netstat -a 显示所有连接…

QML Component 与 Loader 结合动态加载组件

在实际项目中,有时候我们写好一个组件,但不是立即加载出来,而是触发某些条件后才动态的加载显示出来,当处理完某些操作后,再次将其关闭掉; 这样的需求,可以使用 Component 包裹着组件&#xff…

在 Mac ARM 架构的 macOS 系统上启用 F1 键作为 Snipaste 的截屏快捷键

在 Mac ARM 架构的 macOS 系统上启用 F1 键作为 Snipaste 的截屏快捷键,主要涉及到两个方面:确保 F1 键作为标准功能键工作 和 在 Snipaste 中设置 F1 为快捷键。 因为 Mac 默认情况下,F1-F12 键通常用作控制屏幕亮度、音量等系统功能的快捷键…

vue3学习1

vite是新的官方构建工具,构建速度比webpack更快 vue项目的入口文件是index.html,一般在这里引入src/main.js,并且设置好容器#app App.vue放的是根组件,components里放分支组件 vue组件中写三种标签,template & s…

istio实现灰度发布,A/B发布, Kiali网格可视化(二)

代码发布是软件开发生命周期中的一个重要环节,确保新功能和修复能够顺利上线。以下是几种常见的代码发布流程。在学习灰度发布之前。我们首先回忆下代码发布常用的几种方法。 A/B(蓝绿)发布: 蓝绿部署是一种通过维护两套独立的环…

MySQL日志undo log、redo log和binlog详解

MySQL 日志:undo log、redo log、binlog 有什么用? 一、前言 在MySQL数据库中,undo log、redo log和binlog这三种日志扮演着至关重要的角色,它们各自承担着不同的功能,共同保障了数据库的正常运行和数据的完整性。了解…

DeepSeek接入Siri(已升级支持苹果手表)完整版硅基流动DeepSeek-R1部署

DeepSeek接入Siri(已升级支持苹果手表)完整版硅基流动DeepSeek-R1部署 **DeepSeek** 是一款专注于深度学习和人工智能的工具或平台,通常与人工智能、机器学习、自动化分析等领域有关。它的主要功能可能包括:深度学习模型搜索&…

电力通信物联网应用,国密网关守护电力数据安全

电力国密网关是用于保护电力调度数据网路由器和电力系统的局域网之间通信安全的电力专用网关机,主要为上下级控制系统之间的广域网通信提供认证与加密服务,实现数据传输的机密性、完整性。 国密算法网关功能特点 身份认证:对接入的设备和用户…

overflow-x: auto 使用鼠标实现横向滚动,区分触摸板和鼠标滚动事件的方法

假设一个 div 的滚动只设置了 overflow-x: auto 我们发现使用鼠标的滚轮是无法左右滚动的,但是使用笔记本电脑的触摸板,或者在移动设备上是可以滚动的。所以我们需要兼容一下鼠标的横向滚动功能。 我们可以监控 wheel 事件,然后根据位置来计…

基于STM32单片机的智能蔬菜大棚温湿度监测系统设计

引言 在现代农业生产中,温湿度、光照强度和土壤湿度等环境因素对植物的生长起着至关重要的作用。智能蔬菜大棚正是基于这些因素,通过自动化控制和远程监控技术,实现对植物生长环境的精准管理,最终提升蔬菜的产量和质量。本文介绍…

【git-hub项目:YOLOs-CPP】本地实现05:项目移植

ok,经过前3个博客,我们实现了项目的跑通。 但是,通常情况下,我们的项目都是需要在其他电脑上也跑通,才对。 然而,经过测试,目前出现了2 个bug。 项目一键下载【⬇️⬇️⬇️】: 精…

Python实战:Excel中文转拼音工具开发教程

在日常办公中,我们经常需要处理Excel文件,有时候需要将中文转换为拼音缩写以方便检索和使用。今天我将分享一个使用Python开发的小工具,它可以自动将Excel文件中指定列的中文转换为拼音缩写。 C:\pythoncode\new\ConvertExcelcontentToPinyin…

新一代MPP数据库:StarRocks

文章目录 1.StarRocks简介2.StarRocks 在数据生态的定位3.StartRocks的使用场景3.1 实时数据仓库3.2 高并发查询3.3 日志与事件分析3.4 物联网(IoT)数据分析3.5 金融风控与实时监控3.6 数据湖查询加速3.7 A/B 测试与实验分析 4.StarRocks与MySQL比较4.1 …

利用 OpenCV 进行棋盘检测与透视变换

利用 OpenCV 进行棋盘检测与透视变换 1. 引言 在计算机视觉领域,棋盘检测与透视变换是一个常见的任务,广泛应用于 摄像机标定、文档扫描、增强现实(AR) 等场景。本篇文章将详细介绍如何使用 OpenCV 进行 棋盘检测,并…

kafka-保姆级配置说明(producer)

配置说明的最后一部分; ##指定kafka集群的列表,以“,”分割,格式:“host:port,host:port” ##此列表用于producer(consumer)初始化连接使用,server列表可以为kafka集群的子集 ##通过此servers列…

Windows 下 Ollama 安装deepseek本地模型

Windows 下 Ollama 安装deepseek本地模型 安装 Ollama 下载 Ollama 下载链接:https://ollama.org.cn/download/windows 下载完成后,按照提示进行安装。 安装过程 安装完成后,安装页面会自动关闭,这是正常现象。 接下来&#…

Java面试——Tomcat

优质博文:IT_BLOG_CN 一、Tomcat 顶层架构 Tomcat中最顶层的容器是Server,代表着整个服务器,从上图中可以看出,一个Server可以包含至少一个Service,用于具体提供服务。Service主要包含两个部分:Connector和…

MySql面试宝典【刷题系列】

文章目录 一、Mysql 的存储引擎 myisam 和 innodb 的区别。二、MySQL数据库作发布系统的存储,一天五万条以上的增量,预计运维三年,怎么优化?三、对于大流量的网站,您采用什么样的方法来解决各页面访问量统计问题?四、锁的优化策略…

图表控件Aspose.Diagram入门教程:使用 Python 将 VSDX 转换为 PDF

将VSDX转换为PDF可让用户轻松共享图表。PDF 文件保留原始文档的布局和设计。它们广泛用于演示文稿、报告和文档。在这篇博文中,我们将探讨如何在 Python 中将 VSDX 转换为 PDF。 本文涵盖以下主题: Python VSDX 到 PDF 转换器库使用 Python 将 VSDX 转…

【含开题报告+文档+PPT+源码】基于springboot加vue 前后端分离的校园新闻审核发布管理系统

开题报告 本研究旨在设计并实现一套基于SpringBoot后端框架结合Vue前端技术的校园新闻发布系统,该系统面向学生用户群体提供了全面的功能服务。学生用户通过身份验证登录后,能够便捷高效地获取校园内的各类新闻资讯,实时了解校内动态。系统不…