当前位置: 首页 > news >正文

Linux中部署Jenkins保姆间教程

 本文将以docker的方式,讲述如何部署Jenkins

一、拉取Jenkins镜像

1.1 最新版Jenkins介绍

最新版Jenkins地址:Download and deploy

当前最新版的如下图所示:

1.2 各版本支持的JDK版本

地址如下:Java Support Policy

如果你安装了不受支持的 Java 版本,你的 Jenkins 控制器将无法运行。 

特别注意:此处的JDK版本是Jenkins运行所依赖的版本。比如jenkins/jenkins:2.492.3
不支持在 JDK8 上运行。根据 Jenkins 的官方文档,从 jenkins/jenkins:2.492.3 版本开始,要求至少使用 Java 17 或更新版本来运行。(官方镜像已内置 OpenJDK)。不过,尽管 Jenkins 本身需要 Java 17 或更新版本来运行,但这并不意味着你不能在 Jenkins 中配置 JDK8 来构建项目。你仍然可以在 Jenkins 的全局工具配置中,为构建任务指定 JDK8,而 Jenkins 运行时使用 Java 17 或更高版本。

1.3 拉取jenkins/jenkins:2.492.3 版本的镜像

docker pull jenkins/jenkins:2.492.3

1.4 查看镜像

docker images

二、启动Jenkins容器

2.1 创建挂载目录

mkdir -p docker-jenkins/jenkins_home

2.2 设置权限

chmod -R 777 /docker-jenkins/jenkins_home

2.3启动容器

docker run -d \--name jenkins \--restart=always \-p 8080:8080 \-p 50000:50000 \-v /docker-jenkins/jenkins_home:/var/jenkins_home \-v /etc/localtime:/etc/localtime:ro \jenkins/jenkins:2.492.3

2.4 查看容器

docker ps

三、初始化Jenkins

3.1 查看Jenkins日志,查看临时密码

docker logs xxx

xxx为容器的id 

3.2 访问Jenkins的Web控制台

通过部署机器的8080端口进行访问。访问的过程会很慢等待一下。服务器内存最好大点,内存小的容易启动不起来。

然后输入刚刚获取的临时密码

3.3 安装插件

输入临时密码,稍等后会进行插件页面,选择《安装推荐的插件即可》:

等待一段时间后,插件安装如下(如果过程中出现几个失败先不管):

接下来按照步骤,创建一个用户,然后就可以开始使用Jenkins啦。

3.4 正常使用

如果你顺利完成了上面的步骤,你就可以正常使用Jenkins了。

3.5 汉化(非必选)

进入插件Plugins:

搜索Locale,勾选,点击安装

下载完成后,可以点击勾选空闲时重启jenkins,也可以自己重启:

四、jenckins实现自动打包持续集成

4.1 新建任务

首先点击新建任务

然后输入一个任务名称,选择构建一个自由风格的软件项目

然后可以选择性的写一下描述,并选择源码管理中的Git

然后输入我们的仓库地址,会显示无法连接,此时我们点击添加按钮(用于添加Git账号)

输入用户名和密码后点击添加

然后选择Credentials,并save保存。如果要该分支,请自行修改

保持后,回到Dashboard页面,即可看到项目        

4.2 配置全局Maven

4.2.1 准备maven

这里以上传我们自己的Maven为案例

首先进入Jenkins挂在目录:

cd /docker-jenkins/jenkins_home

其次上传maven:

4.2.2配置Maven

进入系统管理:

选择全局工具配置:

先滑倒最下面,点击《新增Maven》:

然后填写maven的信息(注意:此次要填容器内的地址):

当然在这里,我们也可以选择自动安装啦

接着,我们滑到最顶端,配置Maven的settings 配置文件,配置完点击保存:

(注意要配置容器内的文件路径)

4.3 尝试构建

点击进入对应的项目:

点击立刻构建:

查看控制台输出:

发现没有git tool:

4.4 解决问题

4.4.1 检查是否有Git plugin

http://www.lryc.cn/news/575583.html

相关文章:

  • 编写CSS的格式
  • React:利用计算属性名特点更新表单值
  • Spring Security 安全控制终极指南
  • ubuntu20.04如何给appImage创建快捷方式
  • 【thinkphp5】Session和Cache记录微信accesstoken
  • 【Docker基础】Docker容器管理:docker rm及其参数详解
  • 百度中年危机:一场艰难的突围战
  • 关于单片机的基础知识(一)
  • 苍穹外卖day3--公共字段填充+新增菜品
  • 【LLM安全】MCP(模型上下文协议)及其关键漏洞、技术细节
  • 解锁企业效率革命:Microsoft 365 Copilot 重塑办公新范式
  • 16.1 Python应用容器化终极指南:Dockerfile多阶段构建与安全优化实战
  • leetcode-2311.小于等于k的最长二进制子序列
  • Apipost和Postman对比
  • view-design的日期时间插件怎么在只选择日期没有选时间的时候给他默认的时间
  • 英特尔汽车业务败走中国,喊出“All in”才过两个月
  • 【机器学习深度学习】线性回归
  • 供应链数据可视化大屏
  • 【Pandas】pandas DataFrame first_valid_index
  • Spring Boot 文件上传大小配置错误解决方案
  • 远程面试平台选声网视频通话提升候选人体验感
  • c++17标准std::filesystem常用函数
  • 微服务架构下面临的安全、合规审计挑战
  • 基于STM32的工业仓库环境智能监控系统设计
  • .NET测试工具Parasoft dotTEST内置安全标准,编码合规更高效
  • Java 大视界 -- 基于 Java 的大数据可视化在智慧城市能源消耗动态监测与优化决策中的应用(324)
  • 单RV的ROI区域算法guess
  • Java底层原理:深入理解线程与并发机制
  • window显示驱动开发—支持 DXGI DDI(四)
  • SpringBoot 中 @Transactional 的使用