前言
Jenkins 是一个开源的自动化服务器,广泛用于持续集成(Continuous Integration,CI)和持续交付(Continuous Delivery,CD)领域。它帮助开发者自动化软件构建、测试、部署等过程,从而提高开发效率、减少人为错误,并且保证代码质量。
- Jenkins 的主要功能
持续集成:自动化地将代码合并到主分支,并执行自动化构建和测试。
自动化构建:从代码提交到生成构建产物(如可执行文件、Docker 镜像等),可以配置 Jenkins 自动化构建过程。
自动化测试:集成自动化单元测试、集成测试等,确保代码质量。
持续交付和部署:支持将构建产物自动部署到测试环境、生产环境或其他服务器。
插件扩展性:Jenkins 提供了大量的插件支持,可以与其他工具(如 Git、Maven、Docker、Kubernetes 等)无缝集成,满足不同需求。
- Jenkins 的核心组件
Jenkins 主机(Master):负责调度任务、分发任务并管理工作流。
Jenkins 从机(Agent):也称为"构建节点",执行由主机调度的构建任务。可以分布在不同的机器上进行并行构建。
- Jenkins 构建流程
创建和配置 Job:在 Jenkins 中,一个 Job 表示一个构建过程,可以通过图形界面或配置文件定义。
触发构建:可以手动触发,也可以根据 Git 提交、定时任务、或者其他触发条件自动启动构建。
执行构建和测试:Jenkins 会在构建节点上执行任务,通常会包含代码编译、单元测试、集成测试等步骤。
报告与反馈:构建完成后,Jenkins 会提供构建报告,包括构建是否成功、测试结果、日志等信息。
- Jenkins 常见的插件
Git Plugin:支持与 Git 仓库的集成,自动拉取最新代码并执行构建。
Maven Plugin:集成 Apache Maven 构建工具,自动化执行构建任务。
Docker Plugin:与 Docker 集成,支持构建 Docker 镜像、运行容器等操作。
Pipeline Plugin:支持通过声明式或脚本化的方式定义复杂的 CI/CD 流水线。
- Jenkins Pipeline
Jenkins Pipeline 是一种基于代码的自动化工具,用于定义持续集成和持续交付流程。Jenkins Pipeline 允许用户通过 Jenkinsfile 来定义一系列构建步骤,这些步骤可以是自动化构建、测试、部署等。
Pipeline 分为两种类型:
Declarative Pipeline:声明式流水线,简洁易懂,适用于大多数场景。
Scripted Pipeline:脚本式流水线,提供更灵活和可定制的功能,但需要更高的脚本编写能力。
- Jenkins 优势
易于安装和配置:Jenkins 提供了简单的图形化界面和大量插件,支持快速配置和安装。
强大的插件支持:通过插件可以将 Jenkins 与各种工具和服务集成,适应不同的开发环境。
社区活跃:Jenkins 拥有一个庞大的开源社区,提供了大量的文档、教程、插件和支持。
分布式构建:可以将 Jenkins 安装在不同的机器上进行分布式构建,提升性能和可扩展性。
- 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
就可以访问拉。