Java学习第一百零九部分——Jenkins(一)

目录

一、前言简介

二、核心价值与优势

三、关键概念

四、下载安装与配置

五、总结归纳概述


一、前言简介

       Jenkins 是一个开源的、基于 Java 的自动化服务器。它的核心使命是实现持续集成和持续交付。简单来说,Jenkins 是一个强大的工具,用于自动化软件开发过程中那些重复性的、容易出错的任务,示例如下:

  1. 构建: 编译源代码(如 Java、C++、Python)。
  2. 测试: 自动运行单元测试、集成测试等。
  3. 打包: 将代码打包成可部署的格式(如 JAR、WAR、Docker 镜像)。
  4. 部署: 将构建好的软件包自动部署到测试环境、预生产环境或生产环境。
  5. 报告: 收集构建和测试结果,生成报告,通知相关人员。

二、核心价值与优势

1. 持续集成: 每当开发人员将代码更改提交到版本控制系统(如 Git、SVN),Jenkins 可以自动触发一次构建和测试过程。这有助于尽早发现集成错误,提高软件质量。
2. 持续交付/部署: 在 CI 的基础上,进一步自动化部署流程,使得软件能够更快速、更可靠地发布到生产环境。
3. 自动化: 解放开发者手动执行繁琐任务的时间,让他们专注于更有价值的工作(如写代码、设计)。
4. 提高效率: 自动化流程大大缩短了从代码提交到产品上线的周期。
5. 提高质量: 频繁的自动化测试能快速捕获缺陷,防止问题累积。
6. 可视化: 提供直观的 Web 界面,展示构建历史、测试结果、控制台输出等,方便监控和排查问题。
7. 可扩展性: 这是 Jenkins 的一大亮点。它拥有**极其庞大且活跃的插件生态系统**(超过 1800 个插件)。这些插件使得 Jenkins 能够:

  • 集成几乎所有主流的版本控制系统(Git, SVN, Mercurial 等)。

  • 支持各种构建工具(Maven, Gradle, Ant, Make, npm 等)。

  • 与测试框架(JUnit, TestNG, Selenium 等)无缝协作。

  • 部署到各种环境(物理机、虚拟机、容器如 Docker、Kubernetes,云平台如 AWS、Azure、GCP)。

  • 集成通知工具(邮件、Slack、Teams 等)。

  • 支持各种项目类型(自由风格项目、Pipeline 等)。

8. 跨平台: 基于 Java 开发,可以在任何支持 Java 的平台上运行(Windows, Linux, macOS)。
9. 社区支持: 作为最老牌、最广泛使用的 CI/CD 工具之一,拥有庞大且活跃的社区,提供丰富的文档、教程和问题解答。

三、关键概念

  • 作业: Jenkins 中自动化任务的基本单位。一个作业定义了要执行的一系列步骤(如拉取代码、编译、测试、部署)。

  • 构建: 执行一次作业的过程称为一次构建。每次构建会产生结果(成功、失败、不稳定)和日志。

  • 节点/代理: Jenkins 可以在主服务器上执行任务,也可以通过代理节点将任务分发到其他机器上执行,实现分布式构建。

  • Pipeline: 现代 Jenkins 的核心。使用代码(通常是 Groovy 语法写在 `Jenkinsfile` 中)来定义整个构建、测试和部署流程。Pipeline 将多个阶段可视化地连接起来,提供了更强大、更灵活、更可维护的自动化能力。

  • 插件: 扩展 Jenkins 功能的模块。

四、下载安装与配置

一、准备工作
   Jenkins 基于 Java,需提前安装Java 11 或 17。

二、安装 Jenkins
Windows 系统
1. 下载安装包:官网下载:https://www.jenkins.io/download/](https://www.jenkins.io/download/ → 选择 Windows 版本。
2. 运行安装程序:双击 `.msi` 文件,按向导安装(建议保持默认路径)。
3. 启动服务:安装完成后自动启动 Jenkins 服务,访问 `http://localhost:8080`。

Linux 系统(Ubuntu/CentOS)
方法1:通过官方仓库安装(推荐)

# Ubuntu/Debian
curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io-2023.key | sudo tee \/usr/share/keyrings/jenkins-keyring.asc > /dev/null
echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] \https://pkg.jenkins.io/debian-stable binary/ | sudo tee \/etc/apt/sources.list.d/jenkins.list > /dev/null
sudo apt update
sudo apt install jenkins
# CentOS/RHEL
sudo wget -O /etc/yum.repos.d/jenkins.repo \https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io-2023.key
sudo yum install jenkins

方法2:直接运行 WAR 包(通用)

# 下载最新 WAR 包
wget https://get.jenkins.io/war-stable/latest/jenkins.war# 运行(默认端口 8080)
java -jar jenkins.war --httpPort=9090  # 可自定义端口

启动服务 & 设置开机自启

sudo systemctl start jenkins
sudo systemctl enable jenkins  # 开机自启

macOS 系统

# 通过 Homebrew 安装
brew install jenkins-lts# 启动服务
brew services start jenkins-lts

三、初始配置 Jenkins
1. 解锁 Jenkins访问 `http://localhost:8080`(或自定义端口)  从日志获取初始密码:

Linux:见下
 

sudo cat /var/lib/jenkins/secrets/initialAdminPassword


Windows:在安装目录的 `secrets/initialAdminPassword` 文件中查找。

2. 安装推荐插件:选择 **Install suggested plugins**(安装官方推荐插件集)。

3. 创建管理员账户:设置用户名、密码和邮箱(勿跳过!)。

4. 配置实例 URL:保持默认 `http://localhost:8080` 或按需修改。

四、基础安全配置
1. 开启全局安全  

  • 进入 Manage Jenkins > Security  

  • 勾选 Enable security → 选择 Logged-in users can do anything

2. 配置代理(可选) 

  •    若需访问外网下载插件:Manage Jenkins > Plugins > Advanced → 设置 HTTP 代理。

五、安装必备插件
进入 Manage Jenkins > Plugins > Available plugins 搜索安装:

插件名称作用
Git集成 Git 版本控制
Pipeline核心流水线功能
Docker构建/推送 Docker 镜像
Blue Ocean现代化可视化流水线界面
Credentials管理密钥(如 GitHub Token)

六、验证安装
1. 创建测试任务:  
   - 首页点击 New Item → 选择 Freestyle project → 在构建步骤添加 `echo "Hello Jenkins!"`  
   - 点击 Build Now,查看控制台输出是否成功。

常见问题解决
1. 端口冲突:  
   - 修改端口:编辑 `/etc/default/jenkins`(Linux)或 Windows 服务配置,更新 `HTTP_PORT=新端口`。

2. 插件安装失败:  
   - 更换更新中心镜像:  
     Manage Jenkins > Plugin Manager > Advanced** → 将 `Update Site` URL 替换为清华镜像:  
     https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json

3. Java 版本不兼容:  
   - 确保使用 Java 11/17!

下一步建议

  • 创建第一个 Pipeline:在项目根目录添加 `Jenkinsfile`,用代码定义构建流程。  

  • 集成 Git 仓库:配置 Webhook 实现提交代码自动触发构建。  

  • 配置从节点(Agent):扩展构建能力至多台机器。

  • Jenkins 官方文档是终极指南 →Jenkins User Documentation

五、总结归纳概述

  • Jenkins 是 CI/CD 领域的基石工具。它通过强大的自动化能力和无与伦比的可扩展性,帮助开发团队实现快速、频繁且可靠的软件构建、测试和发布,是现代 DevOps 实践中不可或缺的一环。

  • Jenkins 就像一个不知疲倦的软件工厂机器人,自动完成代码从提交到上线过程中的所有脏活累活,让开发者更高效,软件质量更高。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微算法科技(NASDAQ:MLGO)使用循环QSC和QKD的量子区块链架构,提高交易安全性和透明度

随着量子计算技术的快速发展,传统区块链所依赖的加密算法面临着被破解的潜在风险。量子计算的强大计算能力可能会在未来打破现有加密体系的安全性,从而对区块链中的交易数据造成威胁。为了应对这一挑战,将量子技术与区块链相结合成为了必然的…

MyBatis SQL映射与动态SQL:构建灵活高效的数据访问层 MyBatis SQL映射与动态SQL:构建灵活高效的数据访问层

🔄 MyBatis SQL映射与动态SQL:构建灵活高效的数据访问层 🚀 引言:动态SQL是MyBatis框架的核心优势之一,它让我们能够根据不同条件动态构建SQL语句,避免了传统JDBC中大量的字符串拼接。本文将深入解析MyBati…

v-model双向绑定指令

文章目录前言v-model.lazy 延迟同步v-model.trim 去掉空格前言 v-model指令是Vue.js中实现双向数据绑定的一种重要机制。它可以将表单控件的值与Vue.js实例中的数据进行双向绑定,即当表单控件的值发生变化时,Vue.js实例中的数据也会随之更新&#xff0c…

电脑IP地址是“169.254.x.x”而无法上网的原因

一、核心原因:自动私有 IP 地址(APIPA)的启用APIPA 机制:这是 Windows 等操作系统内置的一种 “备用方案”。当电脑设置为 “自动获取 IP 地址”(通过 DHCP 协议),但无法从路由器、光猫等网络设…

单片机存储区域详解

目录 单片机内存区域划分 boot引脚启动介绍 1. boot引脚的三大启动区域介绍 1.用户闪存(User Flash) - 最常用模式 2. 系统存储区(System Memory) - 出厂预置Bootloader区 3. 内置SRAM启动(RAM Boot) - 特殊调试模式 2.用户闪存(User Flash)内存管理详解 一、用户闪存中…

Go语言实战案例:简易JSON数据返回

在现代 Web 应用中,JSON 已成为前后端通信的主流数据格式。Go 语言标准库内置对 JSON 的良好支持,只需少量代码就能返回结构化的 JSON 响应。本篇案例将手把手带你完成一个「返回 JSON 数据的 HTTP 接口」,帮助你理解如何用 Go 语言实现后端服…

扣子Coze中的触发器实现流程自动化-实现每日新闻卡片式推送

基础知识 什么是触发器/能做什么 Triggers 智能体设置触发器(Triggers),使智能体在特定时间或接收到特定事件时自动执行任务。为什么需要触发器?实操步骤 第1步:打开一个智能体编辑页第2步:技能 - 触发器 -…

GitCode 7月:小程序积分商城更名成长中心、「探索智能仓颉!Cangjie Magic 体验有奖征文活动」圆满收官、深度对话栏目持续热播

运营情况总结 🎉 截至7月底,GitCode 这个热闹的开发者社区,已经聚集了 656 万位开发者小伙伴啦! 💻 产品:小程序积分商城更名为成长中心啦,更多功能将陆续上线。 🌟 G-Star&#xff…

机器学习之支持向量机(原理)

目录 摘要 一、概述 二、SVM算法定义 1.超平⾯最⼤间隔介绍 2.硬间隔和软间隔 1.硬间隔分类 2. 软间隔分类 三、SVM算法原理 1 定义输⼊数据 2 线性可分⽀持向量机 3 SVM的计算过程与算法步骤 四、核函数 五、SVM算法api介绍 1. 核心参数说明 2. 主要方法 3. 重…

【Unity3D实例-功能-跳跃】角色跳跃

今天,我们来聊聊 Unity 里最常打交道的动作之一——角色跳跃。无论是横版闯关还是 3D 跑酷,跳跃都是让角色“活”起来的核心操作。在 Unity 里,几行脚本就能让角色一蹬而起、稳稳落地。下面,就让我们一起把这个“弹跳感”亲手做出…

react+echarts实现变化趋势缩略图

如上图,实现一个缩略图。 import React, { useState, useEffect } from react; const ParentCom () > {const [data, setData] useState({});useEffect(() > {// 这里可以做一些接口请求等操作setData({isSheng: false, value: 11.24, percentage: 2.3%, da…

C语言宏相关操作

宏 宏名称通常都是由大写英文字母构成的宏名称里不可以包含空格用宏给数字起名字的时候不可以使用赋值运算符,不要自增自减可以在编写程序的时候直接使用宏名称替代数字,编译器在编译的时候会把程序里的宏替换成它所代表的数字 1. 为什么要使用宏&#x…

STM32内部读写FLASH

很多情况下,在STM32中写入一些数据,在某些不可控因素下其数据无法保存。因此,解决此问题就要用到FLASH.什么是内部 Flash? Flash 是一种非易失性存储器,STM32 的程序和常量数据就存在 Flash 中。它的关键特点是:特性说…

Oracle 12c + Pl/Sql windows系统下表空间创建、迁移,dmp备份导入,数据库字符集更改

一、开发环境 操作系统:win11 Oracle版本:12c Oracle 数据库字符集:AL32UTF8 Pl/Sql版本:14 二、表空间创建 表空间是 Oracle 数据库中一种重要的逻辑结构,它是数据库中数据文件的逻辑集合,用于存储数据库对…

GUI:QT简介

一、什么是QT?Qt是一套跨平台的 C 图形用户界面(GUI)应用程序开发框架,由挪威 Trolltech(奇趣科技)于 1991 年创建,2008 年被诺基亚收购,2012 年后由 Qt Company 负责维护。它广泛应…

oceanbase执行execute immediate create table提示无权限

问题:OB库4.2.5.4版本,执行到这一句的时候,报没有权限:[rootlnob ~]# obclient -h192.168.207.28 -P2881 -ugistarlnzyob -pxxxxxx -A Welcome to the OceanBase. Commands end with ; or \g. Your OceanBase connection id is 3…

滴滴招java开发

滴滴集团 北京(岗位信息已经过jobleap.cn授权,可在csdn发布)收录时间: 2025年08月01日职位描述 负责滴滴海外业务准入审核及反作弊相关系统的后端开发及系统维护; 职位要求 1、统招本科及以上学历,计算机科…

深入解析基于Zookeeper分布式锁在高并发场景下的性能优化实践指南

深入解析基于Zookeeper分布式锁在高并发场景下的性能优化实践指南 在大规模分布式系统中,如何保证多个节点对同一资源的有序访问,是提高系统稳定性与一致性的核心需求之一。Zookeeper 提供的分布式锁机制,以其简洁的原理和高可靠性&#xff0…

腾讯云CodeBuddy AI IDE+CloudBase AI ToolKit打造理财小助手网页

CodeBuddy 腾讯云CodeBuddy AI IDECloudBase AI ToolKit打造理财小助手网页 在线体验地址:理财小助手 在线仓库:https://cnb.cool/pickstars-2025/ai-financial-assistant 🌟 Hello,我是摘星! 🌈 在彩虹般…

2025-08-08 李沐深度学习11——深度学习计算

文章目录1 模型构造1.1 自定义 MLP(多层感知机)1.1.1 __init__ (构造函数)1.1.2 forward (前向传播)1.2 使用自定义 MLP1.3 自定义 Sequential 类1.4 前向传播1.5 模块的嵌套使用2 参数管理2.1 参数访问2.2 嵌套模型2.3 参数初始化2.4 参数共享3 自定义层…