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了。

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

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

相关文章

飞牛 fnos 使用docker部署 bili-sync:打造自动化 B 站资源下载器,与主流媒体服务器无缝衔接

Bili-Sync介绍及相关部署操作 一、Bili-Sync概述 Bili-Sync是哔哩哔哩内容同步助手,它能借助用户提供的登录信息,定期对用户的视频合集以及个人收藏进行遍历,找出还没在本地保存的新内容,然后自动下载到本地存储,以此…

Idean 处理一个项目引用另外一个项目jar 但jar版本低的问题

当在idea中一个module A引用另外一个项目B的jar,但是从私服仓库中拉下的jar版本比较低导致编译不通过时,可以把项目B拉下来,重新编译打包jar跟新到本地的仓库 选中右边菜单的Maven 选中对应的项目B-》Lifecycle->双击 install也可以按住c…

【day11】面向对象编程进阶(继承)

概述 本文深入探讨面向对象编程的核心概念,包括继承、方法重写、this和super关键字的使用,以及抽象类和方法的定义与实现。通过本文的学习,你将能够: 理解继承的优势。掌握继承的使用方法。了解继承后成员变量和成员方法的访问特…

高效准确的PDF解析工具,赋能企业非结构化数据治理

目录 准确性高:还原复杂版面元素 使用便捷:灵活适配场景 贴心服务:快速响应机制 在数据为王的时代浪潮中,企业数据治理已成为组织优化运营、提高竞争力的关键。随着数字化进程的加速,企业所积累的数据量呈爆炸式增长…

Unity全局雾效

1、全局雾效是什么 全局雾效(Global Fog)是一种视觉效果,用于在3D场景中模拟大气中的雾气对远处物体的遮挡 它通过在场景中加入雾的效果,使得距离摄像机较远的物体看起来逐渐被雾气覆盖,从而创造出一种朦胧、模糊的视…

解决Apache/2.4.39 (Win64) PHP/7.2.18 Server at localhost Port 80问题

配置一下apache里面的配置文件:httpd.conf 和 httpd.vhosts.conf httpd.conf httpd-vhosts.conf 重启服务 展示: 浏览器中中文乱码问题:

【Spring事务】深入浅出Spring事务从原理到源码

什么是事务 保证业务操作完整性的一种数据库机制 (driver 驱动)事务特定 ACID A 原子性 (多次操作 要不一起成功 要不一起失败 (部分失败 savepoint)) C 一致性 (事务开始时数据状态&#xff0c…

MFC/C++学习系列之简单记录13

MFC/C学习系列之简单记录13 前言memsetList Control代码注意 总结 前言 今天记录一下memset和List control 的使用吧! memset memset通常在初始化变量或清空内存区域的时候使用,可以对变量设定特定的值。 使用: 头文件: C&#…

C# cad启动自动加载启动插件、类库编译 多个dll合并为一个

可以通过引用costura.fody的包,编译后直接变为一个dll 自动加载写入注册表、激活码功能: 【CAD二次开发教程-实例18-启动加载与自动运行-哔哩哔哩】 https://b23.tv/lKnki3f https://gitee.com/zhuhao1912/cad-atuo-register-and-active

Android Studio AI助手---Gemini

从金丝雀频道下载最新版 Android Studio,以利用所有这些新功能,并继续阅读以了解新增内容。 Gemini 现在可以编写、重构和记录 Android 代码 Gemini 不仅仅是提供指导。它可以编辑您的代码,帮助您快速从原型转向实现,实现常见的…

固定电话采用的是模拟信号还是数字信号?如果通话两端采用不同的信号会发生什么?

固定电话信号大揭秘:模拟与数字信号的纠缠 模拟信号 VS 数字信号:谁是电话界的“老江湖”? 固定电话采用的是模拟信号还是数字信号? 这其实取决于接入方式: 铜线接入:传统方式,使用模拟电信号…

<项目代码>YOLO Visdrone航拍目标识别<目标检测>

项目代码下载链接 <项目代码>YOLO Visdrone航拍目标识别<目标检测>https://download.csdn.net/download/qq_53332949/90163918YOLOv8是一种单阶段(one-stage)检测算法,它将目标检测问题转化为一…

druid与pgsql结合踩坑记

最近项目里面突然出现一个怪问题,数据库是pgsql,jdbc连接池是alibaba开源的druid,idea里面直接启动没问题,打完包放在centos上和windows上cmd窗口都能直接用java -jar命令启动,但是放到国产信创系统上就是报错&#xf…

LabVIEW电机控制中的主动消抖

在LabVIEW电机控制系统中,抖动现象(如控制信号波动或机械振动)会影响系统的稳定性和精度。通过使用主动消抖算法,可以有效降低抖动,提高控制性能。本文将介绍几种主流的主动消抖算法,并结合具体应用案例进行…

Vue CLI 脚手架创建项目流程详解 (2)

更新 CLI 脚手架 确保你安装的是最新版本的 Vue CLI,以支持最新的特性及改进。你可以通过以下命令全局安装或更新 Vue CLI: npm install -g vue/cli创建 Vue 3.x 项目 启动创建向导 使用 vue create 命令来开始创建一个新的 Vue 项目: vue …

macos 隐藏、加密磁盘、文件

磁盘加密 打开磁盘工具 点击添加 设置加密参数 设置密码 查看文件 不用的时候右键卸载即可使用的时候装载磁盘,并输入密码即可 修改密码 解密 加密,输入密码即可 禁止开机自动挂载此加密磁盘 如果不禁止自动挂载磁盘,开机后会弹出输入…

Chapter 19 Layout and Packaging

Chapter 19 Layout and Packaging 这一章我们介绍版图和封装, 关注模拟和数字电路的要求. 首先讲模拟电路中layout设计考虑, 然后解决衬底coupling问题, 最后描述封装问题, 分析IC的外部电容和电感问题. 19.1 General Layout Considerations 19.1.1 Design Rules Minimum W…

c++ ------语句

一、简单语句 简单语句是C中最基本的语句单元,通常以分号(;)结尾,用于执行一个单一的操作。常见的简单语句类型有: 表达式语句:由一个表达式后面加上分号构成,用于计算表达式的值或者执行具有…

OpenResty、Lua介绍认识

文章目录 官网网址openrestry介绍OpenResty 的关键特性包括:应用场景:Lua 在 OpenResty 中的应用 安装openrestry简单实验下 官网网址 开源版在线文档和支持 商业版支持 什么是Lua 学习Lua语法 每篇一问:什么是编译型语言,什么是…

Flutter组件————Container

Container Container 是 Flutter 中最常用的布局组件之一 参数 参数名称类型描述alignmentAlignmentGeometry定义子组件在其内部的对齐方式,默认为 null,即不改变子组件的位置。paddingEdgeInsetsGeometry内边距,用于在子组件周围添加空间…