linux 安装 Jenkins 教程

前言

Jenkins 是一个开源的自动化服务器,广泛用于持续集成(Continuous Integration,CI)和持续交付(Continuous Delivery,CD)领域。它帮助开发者自动化软件构建、测试、部署等过程,从而提高开发效率、减少人为错误,并且保证代码质量。

  1. Jenkins 的主要功能

持续集成:自动化地将代码合并到主分支,并执行自动化构建和测试。

自动化构建:从代码提交到生成构建产物(如可执行文件、Docker 镜像等),可以配置 Jenkins 自动化构建过程。

自动化测试:集成自动化单元测试、集成测试等,确保代码质量。

持续交付和部署:支持将构建产物自动部署到测试环境、生产环境或其他服务器。

插件扩展性:Jenkins 提供了大量的插件支持,可以与其他工具(如 Git、Maven、Docker、Kubernetes 等)无缝集成,满足不同需求。

  1. Jenkins 的核心组件

Jenkins 主机(Master):负责调度任务、分发任务并管理工作流。

Jenkins 从机(Agent):也称为"构建节点",执行由主机调度的构建任务。可以分布在不同的机器上进行并行构建。

  1. Jenkins 构建流程

创建和配置 Job:在 Jenkins 中,一个 Job 表示一个构建过程,可以通过图形界面或配置文件定义。

触发构建:可以手动触发,也可以根据 Git 提交、定时任务、或者其他触发条件自动启动构建。

执行构建和测试:Jenkins 会在构建节点上执行任务,通常会包含代码编译、单元测试、集成测试等步骤。

报告与反馈:构建完成后,Jenkins 会提供构建报告,包括构建是否成功、测试结果、日志等信息。

  1. Jenkins 常见的插件

Git Plugin:支持与 Git 仓库的集成,自动拉取最新代码并执行构建。

Maven Plugin:集成 Apache Maven 构建工具,自动化执行构建任务。

Docker Plugin:与 Docker 集成,支持构建 Docker 镜像、运行容器等操作。

Pipeline Plugin:支持通过声明式或脚本化的方式定义复杂的 CI/CD 流水线。

  1. Jenkins Pipeline

Jenkins Pipeline 是一种基于代码的自动化工具,用于定义持续集成和持续交付流程。Jenkins Pipeline 允许用户通过 Jenkinsfile 来定义一系列构建步骤,这些步骤可以是自动化构建、测试、部署等。

Pipeline 分为两种类型:

Declarative Pipeline:声明式流水线,简洁易懂,适用于大多数场景。

Scripted Pipeline:脚本式流水线,提供更灵活和可定制的功能,但需要更高的脚本编写能力。

  1. Jenkins 优势

易于安装和配置:Jenkins 提供了简单的图形化界面和大量插件,支持快速配置和安装。

强大的插件支持:通过插件可以将 Jenkins 与各种工具和服务集成,适应不同的开发环境。

社区活跃:Jenkins 拥有一个庞大的开源社区,提供了大量的文档、教程、插件和支持。

分布式构建:可以将 Jenkins 安装在不同的机器上进行分布式构建,提升性能和可扩展性。

  1. Jenkins 的挑战

配置复杂性:随着项目规模的增大,Jenkins 配置和维护可能变得复杂。

性能瓶颈:在大型项目中,Jenkins 可能面临性能瓶颈,尤其是构建并行性和资源管理。

安全性问题:由于 Jenkins 是一个面向开发的工具,存在一定的安全隐患,需要注意访问控制和权限管理。

总结

Jenkins 是一款功能强大的自动化服务器,广泛应用于软件开发中的持续集成和持续交付。通过 Jenkins,开发团队可以更快、更可靠地交付软件,并且能够自动化地执行构建、测试和部署任务。虽然它存在一些配置和性能上的挑战,但凭借强大的插件生态和灵活的定制能力,Jenkins 仍然是 DevOps 流程中不可或缺的工具之一。

开始安装

官网:詹金斯

Jenkins War 软件包:War Jenkins 软件包
运行 Jenkins 系统Java 支持策略:Java 支持策略

Jenkins入门指南:开始使用 Jenkins

一 、第一步需要安装 jdk 查看Java 支持策略 选择与Jenkins所匹配的 jdk版本。

参考我以前的文档安装jdk:linux CentOS系统安装jdk教程_centos下载jdk-CSDN博客

二、下载Jenkins War 软件包 注意要与jdk版本匹配。

我的jdk版本是21 所以下载了jenkins.war 2.426的版本。

bash 复制代码
 wget https://sg.mirror.servanamanaged.com/jenkins/war/2.426/jenkins.war

安装成功之后就可以直接用 java -jar 命令启动起来,可以通过 httpPort 来指定端口号

bash 复制代码
java -jar jenkins.war --httpPort=8080

然后去游览器上访问:ip地址加端口号 比如我的是 http://192.168.153.200:8080/

密码 复制到对应的地方,点击 继续。

这里建议点击 选择插件来安装 ,在点击 ,不安装任何插件,再点击安装

进入到创建管理员页面,填写账户信息后,保存并完成

进入以下页面配置 jenkins 的 URL,一般使用默认的就行了,保存并完成

初始化安装完成。

开始使用 jenkins 吧。

将 Jenkins 添加 systemd 服务

1、创建 systemd 服务单元文件

bash 复制代码
sudo vim /etc/systemd/system/jenkins.service

2、在文件中输入以下内容:

bash 复制代码
[Unit]
Description=Jenkins Automation Server
After=network.target

[Service]
User=root
Group=root
ExecStart=/usr/bin/java -jar /root/gao/jenkins/jenkins.war --httpPort=8080
Restart=always
Environment="JENKINS_HOME=/var/lib/jenkins"

[Install]
WantedBy=multi-user.target

:wq 保存退出。

3、 重新加载 systemd 配置

bash 复制代码
sudo systemctl daemon-reload

4、使用 systemd管理 systemd服务命令

bash 复制代码
#启动 Jenkins 服务
sudo systemctl start jenkins
#设置 Jenkins 在系统启动时自动启动
sudo systemctl enable jenkins
#检查 Jenkins 服务状态
sudo systemctl status jenkins
#查看 Jenkins 日志
sudo journalctl -u jenkins
#停止服务:
sudo systemctl stop jenkins
#重启服务:
sudo systemctl restart jenkins

5、以下状态是启动成功。

6、服务需要重新加载 以下情况属于正常,耐心等待一会儿就行。

运维

如果使用systemd服务无法启动jenkins 服务。

1、查看端口是否被占用

bash 复制代码
netstat -tuln | grep 8080
#或者
ss -tuln | grep 8080

2、如果端口被占用,你可以查找占用该端口的进程 ID (PID)。执行以下命令

bash 复制代码
lsof -i :8080

3、停止占用端口的进程

bash 复制代码
kill -9 12345

4、重新启动 Jenkins

bash 复制代码
sudo systemctl start jenkins

如何更改端口号:

1、编辑启动文件

bash 复制代码
sudo vim /etc/systemd/system/jenkins.service

2、修改访问端口

3、重新加载 systemd 配置

bash 复制代码
sudo systemctl daemon-reload

4、重启systemd服务

bash 复制代码
sudo systemctl restart jenkins

5、如果服务启动成功,但是浏览器无法访问,检查防火墙状态。

bash 复制代码
sudo firewall-cmd --state

打开 8083 端口访问端口

bash 复制代码
sudo firewall-cmd --zone=public --add-port=8083/tcp --permanent
sudo firewall-cmd --reload

就可以访问拉。

相关推荐
A小辣椒1 天前
TShark:Wireshark CLI 功能
linux
A小辣椒1 天前
TShark:基础知识
linux
AlfredZhao1 天前
OCI 明明分配了 200G 系统盘,为什么 df 只看到 30G?
linux·oci
AlfredZhao2 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334662 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪2 天前
linux 拷贝文件或目录到指定的位置
linux
大树883 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠3 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质3 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
bush43 天前
嵌入式linux学习记录十四、术语
linux·嵌入式