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

Jenkins持续集成部署——jenkins安装

前言

Jenkins 是一个开源的自动化服务器,主要用于持续集成(CI)和持续交付(CD)。它为软件开发团队提供了一个易于使用的平台来自动化构建、测试和部署应用程序的过程。

Jenkins 主要功能

1. 持续集成 (CI)

  • 自动构建:每次代码提交后,Jenkins 可以自动触发构建过程,确保最新的代码可以成功编译。
  • 测试执行:在构建完成后,Jenkins 可以运行单元测试、集成测试等,确保代码质量。
  • 静态代码分析:通过插件,Jenkins 可以执行静态代码分析工具(如 SonarQube),检查代码中的潜在问题。

2. 持续交付 (CD)

  • 自动化部署:Jenkins 支持从构建到部署的整个流水线自动化,包括将应用程序部署到不同环境(如开发、测试、生产)。
  • 版本控制集成:与各种版本控制系统(如 Git、SVN)无缝集成,能够自动检测代码变更并触发相应的构建任务。

3. Pipeline as Code

  • 定义 CI/CD 流水线:使用 Jenkins Pipeline 功能,可以将 CI/CD 流程定义为代码的一部分,并将其存储在项目的源代码仓库中。这不仅便于版本控制,还促进了团队协作和审查。
  • Declarative 和 Scripted Pipelines:提供两种编写 Pipeline 的方式,满足不同的需求。Declarative Pipeline 更加结构化,适合新手;Scripted Pipeline 提供更大的灵活性,适合复杂场景。

4. 分布式构建

  • 主从架构:Jenkins 支持主从架构,允许将构建任务分发到多个节点上执行,提高构建效率,特别适用于大型项目或需要跨平台构建的情况。
  • 多平台支持:可以在不同的操作系统(如 Linux、Windows、macOS)上设置 Jenkins Agent,以适应多样化的构建需求。

5. 插件生态系统

  • 丰富的插件库:拥有超过 1,500 个插件,涵盖从构建工具、测试框架到通知服务等各种工具和技术,极大地扩展了 Jenkins 的功能。
  • 自定义扩展:用户还可以根据自己的需求开发和安装自定义插件,进一步增强 Jenkins 的能力。

6. 安全性和权限管理

  • 用户认证:支持多种认证机制(如 LDAP、Active Directory),确保只有授权人员才能访问和操作 Jenkins。
  • 权限控制:提供了细粒度的权限管理,可以根据角色分配不同的权限,保护敏感信息和操作。

7. 监控和报告

  • 构建状态可视化:通过 Web 界面直观地展示每个 Job 的构建状态,帮助团队快速了解项目健康状况。
  • 历史记录和趋势分析:保存所有构建的历史记录,提供趋势分析图表,有助于发现和解决长期存在的问题。

8. 通知和集成

  • 通知机制:可以通过电子邮件、Slack、HipChat 等多种渠道发送构建结果通知,确保团队成员及时获得反馈。
  • 第三方服务集成:与 Docker、Kubernetes、AWS 等云服务和其他 DevOps 工具链集成,提升整体工作效率。

9. 易用性

  • Web 界面:提供了友好的 Web 用户界面,简化了 Jenkins 的配置和管理。
  • 文档和支持:拥有详尽的官方文档和活跃的社区支持,方便用户学习和解决问题

Jenkins 工作流

代码提交

        1. ​​​​​开发人员将代码提交到版本控制系统(如 Git)。

        2. 提交代码后,版本控制系统会记录此次提交。

触发构建

        1. Jenkins 监控版本控制系统的变化,当检测到代码提交时,会自动触发构建。

        2. Jenkins 会根据配置的触发规则(如代码提交、定时任务等)启动构建任务。

构建和测试

        1. Jenkins 根据配置的构建脚本,编译代码并运行自动化测试。

        2. 测试结果会被记录并分析,以确保代码的质量。

        3. ​​​如果测试失败,构建过程会中断,并报告失败原因。

生成构建结果

        1. Jenkins 将构建结果(成功或失败)报告给开发人员,并生成构建工件(如可执行文件、Docker 镜像等)。

        2. 构建工件会被存储在 Jenkins 的工作空间中,以便后续使用。

        3. ​​​​​​​Jenkins 还可以生成详细的构建日志和报告,方便开发人员查看和调试。

部署

​​​​​​​        1. Jenkins 可以自动将构建好的工件部署到测试环境或生产环境。

        2. 部署过程可以配置为手动或自动,具体取决于团队的需求和流程。

​​​​​​​        3. Jenkins 支持多种部署方式,如直接部署到服务器、通过 Docker 部署等。

Jenkins 安装

1. 基础环境准备

        1.1节点规划

IP

主机名

节点

192.168.200.70

jenkins

Jenkins

        上传jdk-17.0.10_linux-x64_bin.tar.gz  jenkins-2.489-1.1.noarch.rpm软件包到虚拟机/root目录下。

2. 安装 Jenkins

2.1 基础环境配置

(1)修改主机名

[root@localhost ~]# hostnamectl  set-hostname jenkins
[root@localhost ~]#bash

(2)关闭防火墙

[root@jenkins ~]# systemctl stop firewalld
[root@jenkins ~]# setenforce 0

2.2 安装 jdk

        Jenkins是基于java8编写的软件,所以在安装之前需要在主机上安装Java8的运行环境,及安装jdk 17.0.10。

[root@jenkins ~]# mkdir /usr/lib/jdk17/
[root@jenkins ~]# tar -zxvf jdk-17.0.10_linux-x64_bin.tar.gz -C /usr/lib/jdk17/
[root@jenkins ~]# ls /usr/lib/jdk17/
jdk-17.0.10

配置环境变量

[root@jenkins ~]# vi /etc/profile
export JAVA_HOME=/usr/lib/jdk17/jdk-17.0.10
export CLASSPATH=.:$JAVA_HOME/lib
export PATH=.:$JAVA_HOME/bin:$PATH
[root@jenkins ~]# source /etc/profile
[root@jenkins ~]# java -version
java version "17.0.10" 2024-01-16 LTS
Java(TM) SE Runtime Environment (build 17.0.10+11-LTS-240)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.10+11-LTS-240, mixed mode, sharing)

2.3 安装 Jenkins

        Jenkins是一个独立的开源软件项目,是基于Java开发的一种可扩展的持续集成(CI)工具,用于监控持续重复的工作,自动的构建和测试软件项目,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。

        解压jenkins-2.489-1.1.noarch.rpm包。

[root@jenkins ~]# rpm -ivh jenkins-2.489-1.1.noarch.rpm 

配置 Jenkins

[root@jenkins ~]# vi /usr/lib/systemd/system/jenkins.service

修改下图标注内容

启动 Jenkins

[root@jenkins ~]#  yum install -y fontconfig
[root@jenkins ~]# systemctl daemon-reload
[root@jenkins ~]# systemctl start jenkins 
[root@jenkins ~]# systemctl status jenkins
[root@jenkins ~]# netstat -tuln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN     
tcp6       0      0 :::8088                 :::*                    LISTEN     
tcp6       0      0 ::1:25                  :::*                    LISTEN     
tcp6       0      0 :::22                   :::*                    LISTEN     
udp        0      0 127.0.0.1:323           0.0.0.0:*                          
udp6       0      0 ::1:323                 :::*                             

登录网站 http://ip:8088(默认端口为8080)

查看安装日志,查询密码,并输入管理员密码。

[root@jenkins ~]# cat /var/lib/jenkins/secrets/initialAdminPassword
c4245c993980486495d104caa4366d60

3. 自定义 Jenkins

(1)安装插件

        登陆后,会出现如下页面,这里涉及到jenkins的插件安装,建议选择“安装推荐的插件”,点击“安装推荐的插件”后,进入“新手入门”页面,等待全部插件安装成功即可。

(2)创建第一个管理员用户

        插件安装完成后,会出现“创建第一个管理员用户”页面,填写正确信息后,点击“保存并完成”,这样第一个管理员用户就创建完毕了,如下图:

至此,Jenkins安装结束。你可以开始使用自己的Jenkins了。

相关文章:

Jenkins持续集成部署——jenkins安装

前言 Jenkins 是一个开源的自动化服务器,主要用于持续集成(CI)和持续交付(CD)。它为软件开发团队提供了一个易于使用的平台来自动化构建、测试和部署应用程序的过程。 Jenkins 主要功能 1. 持续集成 (CI) 自动构建…...

微信小程序开发入门

实现滚动 需要设置高度和边框 轮播图 差值表达式( {{表达式的值}} ),info数据要写到js文件的data数据中 小程序中常用的事件...

深度学习中自适应学习率调度器

传统观点认为,太大的学习率不利于优化深度神经网络,而相比固定的学习率而言,变化的学习率更能提供快速的收敛。基于此,本文作者基于理论基础提出了一个计算深度神经网络学习率的新方法。实验结果证明了该方法的有效性。 训练神经…...

Phono3py hdf5文件数据读取与处理

Phono3py是一个主要用python写的声子-声子相互作用相关性质的模拟包,可以基于有限位移算法实现三阶力常数和晶格热导率的计算过程,同时输出包括声速,格林奈森常数,声子寿命和累积晶格热导率等参量。 相关介绍和安装请参考往期推荐…...

React 底部加载组件(基于antd)

底部加载组件的意义在于提供一种流畅的用户体验,以便在用户滚动到页面底部时自动加载更多内容。这样可以让用户无需离开当前页面,就能够无缝地浏览更多的内容.通过底部加载组件,可以分批加载页面内容,减少一次性加载大量数据对页面…...

将HTML转换为PDF:使用Spire.Doc的详细指南(一) 试用版

目录 引言 1. 为什么选择 Spire.Doc? 1.1 主要特点 1.2 适用场景 2. 准备工作 2.1 引入 Spire.Doc 依赖 2.2 禁用 SSL 证书验证 3. 实现功能 3.1 主类结构 3.2 代码解析 4. 处理图像 5. 性能优化 5.1 异步下载图像 示例代码 5.2 批量处理优化 示例代…...

数据结构经典算法总复习(下卷)

第五章:树和二叉树 先序遍历二叉树的非递归算法。 void PreOrderTraverse(BiTree T, void (*Visit)(TElemType)) {//表示用于查找的函数的指针Stack S; BiTree p T;InitStack(S);//S模拟工作栈while (p || !StackEmpty(S)) {//S为空且下一个结点为空,意味着结束遍…...

mac 安装graalvm

Download GraalVM 上面链接选择jdk的版本 以及系统的环境下载graalvm的tar包 解压tar包 tar -xzf graalvm-jdk-<version>_macos-<architecture>.tar.gz 移入java的文件夹目录 sudo mv graalvm-jdk-<version> /Library/Java/JavaVirtualMachines 设置环境变…...

【SH】在Ubuntu Server 24中基于Python Web应用的Flask Web开发(实现POST请求)学习笔记

文章目录 Flask开发环境搭建保持Flask运行Debug调试 路由和视图可变路由 请求和响应获取请求信息Request属性响应状态码常见状态码CookieSession 表单GET请求POST请求 Flask 在用户使用浏览器访问网页的过程中&#xff0c;浏览器首先会发送一个请求到服务器&#xff0c;服务器…...

一些经济政治学类书籍推荐 --- 以及与之相关我的经历和理解

我给所开设的兴趣专栏_墨#≯的博客-CSDN博客&#xff0c;的介绍是&#xff1a; 聊聊关于文学、经济(股票等)、法律方面的个人感受与理解。 不过目前已有的两篇以及现在在写的这篇都是经济相关的&#xff0c;其实专栏开设的9月至今&#xff0c;我也看了好几本文学相关的书&#…...

设计模式之 abstract factory

适用场景 一个系统要独立于它的产品的创建、组合和表示时。一个系统要由多个产品系列中的一个来配置时。当你要强调一系列相关的产品对象的设计以便进行联合使用时。当你提供一个产品类库&#xff0c;而只想显示它们的接口而不是实现时 架构演示 首先client这个东西可以接触到…...

汽车IVI中控开发入门及进阶(三十八):手机投屏HiCar开发

手机投屏轻松实现手机与汽车的无缝连接,导航、音乐、通话等功能应有尽有,还支持更多第三方应用,让车载互联生活更加丰富多彩。 HiCar在兼容性和开放性上更具优势。 手机投屏可以说是车机的杀手级应用,大大拓宽了车机的可用性范围。其中华为推出的HiCar就是非常好用的一种。…...

Springmvc,spring ,mybatis,整合,ssm

上一章内容&#xff1a; 1.spring框架:作用 开源的框架--提供IOC和AOPIOC控制反转 把创建对象的权力交于spring创建&#xff0c;并管理对象的生命周期&#xff0c;通过DI完成对象属性的注入。 ​ 2. spring配置中<bean>也可以使用注解Component Controller Service Repo…...

《庐山派从入门到...》板载按键启动!

《庐山派从入门到...》板载按键启动&#xff01; 《庐山派从入门到...》板载按键启动&#xff01; 视频内容大致如下 我们之前了解了GPIO的输出模式使用方法&#xff0c;并且成功点灯&#xff0c;很明显本篇要来分享的自然是GPIO的输入模式 正好回顾一下之前学的python基础包…...

Mapbox-GL 中 `token` 的使用

Mapbox-GL 是一个开源的 JavaScript 库&#xff0c;允许开发者在网页上渲染交互式地图。token 在 Mapbox 中主要是指 access token&#xff0c;它用于身份验证和授权&#xff0c;确保应用程序能够访问 Mapbox 的地图服务。 下面详细解析 Mapbox GL 中 token 的使用&#xff0c…...

Flutter组件————PageView

PageView 可以创建滑动页面效果的widget&#xff0c;它允许用户通过水平或垂直滑动手势在多个子页面&#xff08;child widgets&#xff09;之间切换。每个子页面通常占据屏幕的全部空间。 参数 参数名类型描述childrenList<Widget>包含在 PageView 中的所有子部件&am…...

c#自定义事件

自定义事件类 定义一个自定义事件参数类 为了传递更多的信息&#xff0c;我们定义一个自定义的事件参数类 public class CustomEventArgs : EventArgs {public string Message { get; set; } } 3. 定义一个发布者类 接下来&#xff0c;我们定义一个发布者类&#xff0c;包含…...

【读书笔记】《论语别裁》寂寞的享受

1.内容摘要 在《论语别裁》中&#xff0c;第一章《学而》探讨了做学问的孤独与坚持。作者强调&#xff0c;真正的学者在追求知识时&#xff0c;必须保持“仁”与“义”的核心价值观&#xff0c;愿意为自己的信念与理想而牺牲。他以孔子为例&#xff0c;描绘了孔子一生的寂寞与…...

Oracle筑基篇-调度算法-LRU的引入

常见的调度算法 图1 调度算法思维导图 一、LRU算法的典型使用场景 1. 操作系统中的页面置换 什么时候用到页面置换算法呢&#xff1f; 当CPU发出指令需要访问某个地址时&#xff0c;若该地址在TLB&#xff08;Translation Lookaside Buffer&#xff0c;快表&#xff09;或页…...

单元测试-Unittest框架实践

文章目录 1.Unittest简介1.1 自动化测试用例编写步骤1.2 相关概念1.3 用例编写规则1.4 断言方法 2.示例2.1 业务代码2.2 编写测试用例2.3 生成报告2.3.1 方法12.3.2 方法2 1.Unittest简介 Unittest是Python自带的单元测试框架&#xff0c;适用于&#xff1a;单元测试、Web自动…...

Prompt Tuning、P-Tuning、Prefix Tuning的区别

一、Prompt Tuning、P-Tuning、Prefix Tuning的区别 1. Prompt Tuning(提示调优) 核心思想:固定预训练模型参数,仅学习额外的连续提示向量(通常是嵌入层的一部分)。实现方式:在输入文本前添加可训练的连续向量(软提示),模型只更新这些提示参数。优势:参数量少(仅提…...

将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?

Otsu 是一种自动阈值化方法&#xff0c;用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理&#xff0c;能够自动确定一个阈值&#xff0c;将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

Linux云原生安全:零信任架构与机密计算

Linux云原生安全&#xff1a;零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言&#xff1a;云原生安全的范式革命 随着云原生技术的普及&#xff0c;安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测&#xff0c;到2025年&#xff0c;零信任架构将成为超…...

【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验

系列回顾&#xff1a; 在上一篇中&#xff0c;我们成功地为应用集成了数据库&#xff0c;并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了&#xff01;但是&#xff0c;如果你仔细审视那些 API&#xff0c;会发现它们还很“粗糙”&#xff1a;有…...

k8s业务程序联调工具-KtConnect

概述 原理 工具作用是建立了一个从本地到集群的单向VPN&#xff0c;根据VPN原理&#xff0c;打通两个内网必然需要借助一个公共中继节点&#xff0c;ktconnect工具巧妙的利用k8s原生的portforward能力&#xff0c;简化了建立连接的过程&#xff0c;apiserver间接起到了中继节…...

Mysql中select查询语句的执行过程

目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析&#xff08;Parser&#xff09; 2.4、执行sql 1. 预处理&#xff08;Preprocessor&#xff09; 2. 查询优化器&#xff08;Optimizer&#xff09; 3. 执行器…...

AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别

【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而&#xff0c;传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案&#xff0c;能够实现大范围覆盖并远程采集数据。尽管具备这些优势&#xf…...

CSS | transition 和 transform的用处和区别

省流总结&#xff1a; transform用于变换/变形&#xff0c;transition是动画控制器 transform 用来对元素进行变形&#xff0c;常见的操作如下&#xff0c;它是立即生效的样式变形属性。 旋转 rotate(角度deg)、平移 translateX(像素px)、缩放 scale(倍数)、倾斜 skewX(角度…...

面试高频问题

文章目录 &#x1f680; 消息队列核心技术揭秘&#xff1a;从入门到秒杀面试官1️⃣ Kafka为何能"吞云吐雾"&#xff1f;性能背后的秘密1.1 顺序写入与零拷贝&#xff1a;性能的双引擎1.2 分区并行&#xff1a;数据的"八车道高速公路"1.3 页缓存与批量处理…...

Pydantic + Function Calling的结合

1、Pydantic Pydantic 是一个 Python 库&#xff0c;用于数据验证和设置管理&#xff0c;通过 Python 类型注解强制执行数据类型。它广泛用于 API 开发&#xff08;如 FastAPI&#xff09;、配置管理和数据解析&#xff0c;核心功能包括&#xff1a; 数据验证&#xff1a;通过…...