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

devtools/2024/12/23 11:55:46/

前言

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.ppmy.cn/devtools/144678.html

相关文章

Vue3:uv-upload图片上传

效果图&#xff1a; 参考文档&#xff1a; Upload 上传 | 我的资料管理-uv-ui 是全面兼容vue32、nvue、app、h5、小程序等多端的uni-app生态框架 (uvui.cn) 代码&#xff1a; <view class"greenBtn_zw2" click"handleAddGroup">添加班级群</vie…

【系统移植】制作SD卡启动——将uboot烧写到SD卡

在开发板上启动Linux内核&#xff0c;一般有两种方法&#xff0c;一种是从EMMC启动&#xff0c;还有一种就是从SD卡启动&#xff0c;不断哪种启动方法&#xff0c;当开发板上电之后&#xff0c;首先运行的是uboot。 制作SD卡启动&#xff0c;首先要将uboot烧写到SD卡&#xff…

模仿elementui的Table,实现思路

vue2子组件使用render&#xff0c;给子子组件插槽传值 和elementui的Table一样使用render 在 Vue 2 中&#xff0c;子组件使用render函数向子子组件插槽传值可以通过以下步骤实现&#xff1a; 1、创建子组件 首先创建一个子组件&#xff0c;在子组件中使用render函数来渲染内容…

asyncio入门指南

本篇文章可以当作是官方文档的总结和补充&#xff0c;详细的API&#xff0c;还是需要看官方文档。一遍一遍看&#xff0c;每看都会有不同的收获。下面进行真题&#xff0c;发车&#xff01; 1.为什么需要asyncio asyncio库为我们提供了并发的能力。 当我们执行一个需要大量i…

【人工智能】用Python实现情感分析:从简单词典到深度学习方法的演进

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 情感分析是自然语言处理(NLP)中的一个重要任务,其目的是通过分析文本内容,识别出其中的情感极性,如正面、负面或中性。随着技术的不断…

电脑开机提示error loading operating system怎么修复?

前一天电脑还能正常运行&#xff0c;但今天启动时却显示“Error loading operating system”&#xff08;加载操作系统错误&#xff09;。我已经仔细检查了硬盘、接线、内存、CPU和电源&#xff0c;确认这些硬件都没有问题。硬盘在其他电脑上可以正常使用&#xff0c;说明不是硬…

【潜意识Java】javaee中的SpringBoot在Java 开发中的应用与详细分析

目录 一、前言 二、Spring Boot 简介 三、Spring Boot 核心模块 四、Spring Boot 项目实战&#xff1a;构建一个简单的 RESTful API 1. 创建 Spring Boot 项目 2. 配置数据库 3. 创建实体类 4. 创建 JPA 仓库接口 5. 创建服务层 6. 创建控制器层 7. 测试 API 8. 运…

Qt:QMetaObject::connectSlotsByName实现信号槽自动关联

简介 在Qt中&#xff0c;QMetaObject::connectSlotsByName 是一个便利的方法&#xff0c;它可以根据对象的对象名&#xff08;objectName&#xff09;自动将信号和槽连接起来。但是&#xff0c;要使用这个方法&#xff0c;必须确保&#xff1a; 1 控件&#xff08;如按钮&…