目录一. 简介1.1 核心概念1.2 Pipeline1.3 常用插件二. 安装三. 启动3.1 java -jar的方式 → 临时使用3.1.1 配置JENKINS_HOME 和 JAVA_HOME3.1.2 指定端口号启动3.2 systemctl的方式 → 长期使用3.2.1 配置JDK环境变量3.2.2 指定端口号启动一. 简介Jenkins是目前最流行的开源持续集成Continuous IntegrationCI和持续交付/部署Continuous Delivery/DeploymentCD工具之一。Jenkins最初的目标是自动化软件构建现在已经发展成一个功能非常强大的自动化平台可以自动完成从代码提交到软件部署的整个流程。简单来说Jenkins 就是一个自动执行任务的平台本质上就是定时或者触发执行脚本。开发人员修改代码 │ ▼ 提交到 Git │ ▼ Jenkins 检测到代码变化 │ ▼ 自动执行 ↓ 编译 ↓ 单元测试 ↓ 打包 Jar ↓ 上传服务器 ↓ 重启 Spring Boot ↓ 通知部署成功1.1 核心概念Job任务最基本的概念一个Job通常用多个stage构成Build构建Job 每执行一次就是一次 Build每次Build都会保存日志Workspace工作空间Pipeline执行过程中用来存储中间产物的目录apluserubuntu22-1:~$ls-l$JENKINS_HOME/workspace/ drwxr-xr-x2apluser apluser4096Jul1814:37 first-job drwxr-xr-x3apluser apluser4096Jul2009:32 second-pipelinetmp drwxr-xr-x3apluser apluser4096Jul2010:26 third-pipeline2tmp drwxr-xr-x3apluser apluser4096Jul2010:36 third-pipelinetmp apluserubuntu22-1:~$NodeMaster节点Agent节点一个Master节点对应多个Agent节点Executor并发执行槽位Executor4表示同时运行个Job1.2 PipelinePipeline把整个 CI/CD 流程用代码描述出来的一种方式。对比项Declarative PipelineScripted Pipeline风格声明式Groovy 脚本式可读性高较低学习难度低高灵活性较高非常高官方推荐✅ 是可用于复杂逻辑常见的触发方式触发方式说明手动点击在 Web 页面点击Build Now定时构建使用 Cron 表达式定时执行Git WebhookGit 仓库推送代码后自动触发上游任务一个 Job 完成后触发另一个 Job远程 API通过 URL 或 REST API 触发构建SCM 轮询定期检查代码仓库是否有变化1.3 常用插件插件用途Git拉取 Git 仓库Pipeline支持 JenkinsfileSSH Agent使用 SSH 密钥连接远程服务器Credentials管理用户名、密码、SSH Key、Token 等凭据Maven Integration与 Maven 构建集成JUnit展示单元测试结果Blue Ocean更现代化的 Pipeline 可视化界面二. 安装针对不同的平台和操作系统官方提供了多种安装方式详情请参考官网https://www.jenkins.io/download/此处介绍来源于官网的在Ubuntu平台上的安装方式添加软件源sudowget-O/etc/apt/keyrings/jenkins-keyring.asc https://pkg.jenkins.io/debian-stable/jenkins.io-2026.keyechodeb [signed-by/etc/apt/keyrings/jenkins-keyring.asc] https://pkg.jenkins.io/debian-stable binary/|sudotee/etc/apt/sources.list.d/jenkins.list/dev/null安装sudoaptupdatesudoaptinstalljenkins确认安装成功apluserubuntu22-1:~$whichjenkins /usr/bin/jenkins apluserubuntu22-1:~$ jenkins--version2.568.1 apluserubuntu22-1:~$ls-l/usr/share/java/jenkins.war -rw-r--r--1root root101063396Jul1000:43 /usr/share/java/jenkins.war三. 启动3.1java -jar的方式 → 临时使用3.1.1 配置JENKINS_HOME和JAVA_HOMEJENKINS_HOME是Jenkins最重要的目录可以理解为 Jenkins 的数据目录。它保存了几乎所有 Jenkins 的数据包括Job 配置Pipeline 配置插件凭据加密保存构建历史Workspace默认情况下日志用户配置默认位置apluserubuntu22-1:~$ls-ld/var/lib/jenkins drwxr-xr-x2jenkins jenkins4096Jul1000:43 /var/lib/jenkins可以根据需求自定义JENKINS_HOME和JAVA_HOME使用java -jar的方式属于临时测试使用因此临时在~/.bashrc中进行配置# 创建jenkins_home文件夹mkdir~/jenkins_home# 配置环境变量, Jenkins运行依赖于Java, 因此也需要配置Java的环境变量nano~/.bashrc# 配置java的环境变量exportJAVA_HOME/home/apluser/JDK/jdk25# 配置Jenkins的环境变量exportJENKINS_HOME/home/apluser/jenkins_home# 导出环境变量exportPATH$JAVA_HOME/bin:$JENKINS_HOME:$PATH# 让环境变量生效source~/.bashrc3.1.2 指定端口号启动默认端口号为8080可以在启动的时候指定端口号java-jar/usr/share/java/jenkins.war--httpPort9090如果通过--httpPort的方式临时指定端口号启动的话Jenkins会提示反向代理设置错误修改下图所示的Jenkins URL中的端口号即可第一次启动的时候会要求设置用户和密码初始的密码会显示在控制台上如下所示3.2 systemctl的方式 → 长期使用jenkins的service配置文件不要直接修改要通过sudo systemctl edit jenkins来修改apluserubuntu22-1:~$ls-l/lib/systemd/system/jenkins.service -rw-r--r--1root root5639Jul1000:43 /lib/systemd/system/jenkins.service常用的命令# 启动 Jenkins 服务sudosystemctl start jenkins# 停止当前的 Jenkins 服务sudosystemctl stop jenkins# 编辑 Jenkins 服务sudosystemctl edit jenkins# 重新读取所有 systemd 配置文件, 并不会重启服务sudosystemctl daemon-reload# 重启 Jenkins 服务sudosystemctl restart jenkins# 设置开机自动启动sudosystemctlenablejenkins# 禁止开机自动启动, 不会停止当前已经运行的服务sudosystemctl disable jenkins# 查看是否设置为开机启动sudosystemctl is-enabled jenkins# 查看是否正在运行sudosystemctl is-active jenkins# 查看运行状态sudosystemctl status jenkins# 查看服务内容sudosystemctl show jenkins systemctlcatjenkins# 查看使用的Environment属性内容systemctl show jenkins--propertyEnvironment# 查看用户属性systemctl show jenkins--propertyUser# 查看启动日志sudojournalctl-ujenkins-b--no-pager-n503.2.1 配置JDK环境变量Jenkins运行依赖于JDK因此必须配置JDK的环境变量因为使用systemctl的方式启动Jenkins服务因此JDK不能在某个用户的~/.bashrc中进行配置详情请参考这篇博客Linux Ubuntu中配置安装Java3.2.2 指定端口号启动默认的端口号会存储在下面所示的两个路径中/etc/default/jenkins/lib/systemd/system/jenkins.service这两个文件是配合工作的但真正起作用的是jenkins.service文件中的 Environment 变量。apluserubuntu22-1:~$ jenkins--version2.568.1 apluserubuntu22-1:~$ apluserubuntu22-1:~$sudogrepHTTP_PORT /etc/default/jenkinsHTTP_PORT8080# --httpPort$HTTP_PORT (default 8080; disable with -1)# --httpsPort$HTTP_PORTJENKINS_ARGS--webroot/var/cache/$NAME/war --httpPort$HTTP_PORTapluserubuntu22-1:~$ apluserubuntu22-1:~$sudogrepJENKINS_PORT /lib/systemd/system/jenkins.serviceEnvironmentJENKINS_PORT8080不推荐修改/lib/systemd/system/jenkins.service因为软件升级时这个文件可能会被覆盖。推荐使用sudo systemctl edit jenkins去修改执行之后会出现一个全部都是注释的模板配置文件将需要修改的内容添加到如下图所示的开头区域英文注释写的很明白写到其他地方的话会被忽略修改完成之后会在/etc/systemd/system/目录下生成一个覆盖默认配置用的jenkins.service.d文件夹和override.conf文件apluserubuntu22-1:~$ls-l/lib/systemd/system/jenkins.service -rw-r--r--1root root5639Jul1000:43 /lib/systemd/system/jenkins.service apluserubuntu22-1:~$ apluserubuntu22-1:~$ls-l/etc/systemd/system/jenkins.service.d/override.conf -rw-r--r--1root root41Jul2121:09 /etc/systemd/system/jenkins.service.d/override.conf apluserubuntu22-1:~$ apluserubuntu22-1:~$cat/etc/systemd/system/jenkins.service.d/override.conf[Service]EnvironmentJENKINS_PORT8082apluserubuntu22-1:~$重新启动# 重新启动apluserubuntu22-1:~$sudosystemctl daemon-reload apluserubuntu22-1:~$ apluserubuntu22-1:~$sudosystemctl restart jenkins# 再次确认apluserubuntu22-1:~$ systemctl show jenkins|grepJENKINS_PORTEnvironmentJENKINS_HOME/var/lib/jenkinsJENKINS_WEBROOT/var/cache/jenkins/warJAVA_OPTS-Djava.awt.headlesstrueJENKINS_PORT8082apluserubuntu22-1:~$查看状态可以看到端口号已经发生了变化