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

就可以访问拉。

相关推荐
m0_748257182 小时前
海康威视摄像头RTSP使用nginx推流到服务器直播教程
运维·服务器·nginx
Pou光明3 小时前
1_linux系统网络性能如何优化——几种开源网络协议栈比较
linux·运维·网络·网络协议·开源
fen_fen3 小时前
Docker如何运行一个python脚本Hello World
运维·docker·容器
TianyaOAO4 小时前
inmp+discuz论坛
linux·运维·服务器
星光璀璨山河无恙4 小时前
【Linux】grep命令
大数据·linux
寒月6584 小时前
黑盒白盒测试
运维·服务器
海绵波波1074 小时前
zerotier实现内网穿透(访问内网服务器)
运维·服务器
helpme流水4 小时前
使用秘钥登录服务器
运维·服务器·github
ccino .4 小时前
【实现多网卡电脑的网络连接共享】
运维·服务器
稳联技术5 小时前
科技潮头浪接天,一桥飞架两界连。EthernetIP转Profinet互译连
linux·服务器·网络