持续集成-Jenkins 基础教程

发布时间:2026/7/5 15:44:33
持续集成-Jenkins 基础教程 文章目录相关概念持续集成(CI)持续测试持续交付(CD)持续部署JenkinsJenkins 是什么Jenkins 如何使用Jenkins 插件下载查看Jenkins的系统配置Jenkins 创建任务Jenkins 配置定时任务Jenkins 系统配置Jenkins 配置实时任务Jenkins构建后发送邮件相关概念持续集成(CI)在了解持续集成前,我们需要知道什么是集成?集成(CI)就是将从分支新提交上来的代码与从主干上拉取到的最新代码在一个模拟的临时的干净的环境进行合并,并将其进行编译,打包成可执行的文件,然后运行事先编译好的测试套件,包括单元测试,集成测试,安全漏洞扫描,代码风格检查等。这整个过程都是自动进行的,其依赖于CI服务器所提供的CI服务,当你push代码到远程分支时,就会自动触发CI服务,CI服务通过后,还会进行人工评审,评审没问题后,新代码才会真正的合并(自动或手动)到主干。注意: 如果CI服务没有通过的话,CI会明确告知开发者本次代码无法安全集成,并停止后续流程。单元测试在整个开发过程中必须持续地进行,不仅CI服务中要进行单元测试,本地也要进行单元测试。持续集成(Continuous Integration) 指的是频繁的(一天多次)将代码集成到主干(master),它的好处主要有以下两个:快速发现错误。每完成一点更新,就集成到主干,可以快速发现错误,定位错误也比较方便。防止分支大幅度偏离主干。如果没有经常集成,而主干又在不断更新,就可能导致以后集成难度变大,甚至难以集成。现在要同时开发五个功能,那么就会有五条分支,假设每个分支初始拉取到主干版本为2.0,如果某一个分支没有持续集成,分支上开发功能又分为多个模块,其他分支上开发完成一个模块并通过测试后,就合并到主干,这时主干版本随之更新,而当这个没有持续集成的分支完成所有模块的开发并通过测试后,想要合并到主干,则可能因为自身(2.0)与主干版本可能3.0,4.0…差距过大而难以集成。持续测试持续测试,这不是一个独立的阶段,而是贯穿整个软件周期始终,在各个方面(单元,集成,系统,性能,安全)对软件进行持续性验证。代码上线的主要流程:持续集成的代码—Test环境—类生产环境—生产环境测试不仅仅会在CI阶段进行,CI阶段结束后,也会在Test环境中进行更专业的测试(如功能测试,集成测试,部分功能性系统测试), 即SIT测试,该测试通过后,就可以将软件提交到类生产环境进行测试,即UAT测试(如端到端测试(模拟用户操作整个业务流程),性能测试,压力测试,用户验收测试等)。持续交付(CD)交付可以看作是集成的下一步,其在集成的基础上,将集成后并通过Test环境验证的软件代码部署到更贴近真实运行环境的类生产环境中进行验证,直到软件进入可发布状态,即通过用户验收测试。Test环境的测试是为交付所做的准备,该环境的测试通过也是交付的前提。持续交付(Continuous Delivery)指频繁的将软件的新版本部署到类生产环境中验证,确保每一次软件的变更都能迅速的可靠的达到可发布状态。持续交付的软件经过人工评审后,就可以将代码部署到生产环境中,即正式发布。持续部署持续部署(Continuous Deployment)是持续交付的高级版本,指的是软件代码一旦发生变更,就会自动部署到生产环境中。与持续交付的区别是:持续交付最后需要通过人工评审,手动部署到生产环境,而持续部署则全程自动化,一旦变更,自动上线,无需人工干预。持续部署全程自动化,其中重点就是验收测试自动化,相较于传统的人工验收测试,持续部署会进行渐进式验收,其会将变更自动部署到生产环境,但只会向少部分用户开放,并且通过实时监控和业务指标进行最终验证,指标没问题,就会逐步向所有用户开放。JenkinsJenkins 是什么Jenkins是一个开源的,可以实现持续集成的工具,可以将其看作一个简单的CI服务器。它能够实时监控集成中存在的错误,提供详细的日志文件和提醒功能,还能用图表的形式形象的展示项目构建的趋势和稳定性。Jenkins 如何使用关于jenkins的下载安装,网上的教程颇多,这里就不再赘述了,下面主要讲下它是如何使用的:Jenkins 插件下载点击Manage Jenkins点击Plugins进入插件管理界面安装Git与Gitee:查看Jenkins的系统配置Jenkins 创建任务所谓的创建任务,就是指Jenkins拉取到整个项目的最新代码,并自动进行一系列的操作,包括对整个项目代码进行集成或者交付。自动化脚本与项目源代码是放在同一个根目录,拉取的时候,是将整个仓库的所有代码进行拉取,而自动进行一系列操作,其实就是Jenkins自动依次调用自动化脚本,而这个调用的次序和策略是由Jenkinsfile文件决定的,它是由Groovy DSL编写的文本文件。事实上所谓的Jenkins执行任务,就是直接识别加载和解析Jenkinsfile文件中的指令。创建任务流程:Jenkins 配置定时任务新建job成功后,点击Dashboard(列表),对新建的任务进行修改任务名下拉箭头---ConfigureBuild Triggers(构建任务触发条件)Build periodically(定期生成构建任务)定期生成构建任务的格式:分钟(0 - 59) 小时(0 - 23) 一个月中的日子(1 - 31) 月份(1 - 12) 星期中的日子(0 - 7其中0和7都代表星期日)具体例子:0 3 * * *(*表示匹配所有每天3点整运行一次)0 19 * * 2,4,6 (, 是英文的每周的246的19点运行一次)0 20 1-10 * * (每个月前10天的20点执行一次)0 20 * * */2 (每周隔2天20点执行一次)Jenkins 系统配置Home directory(主目录):这是 Jenkins 所有数据的“大本营”。所有的构建历史、流水线日志、插件安装包、用户权限配置、凭据密钥等都存储在这个文件夹里。该路径后续不建议随意更改如果要更改,务必保证该磁盘有充足的空间否则构建会失败。System Message系统消息:这是一个全局公告栏。你可以在这里输入 HTML 文本如font colorred系统将于今晚 22:00 重启/font它会显示在 Jenkins 主页(仪表盘)的最上方用于向所有用户发布运维通知或使用规范。# of executors执行器数量:代表 Jenkins主节点Master上允许同时并发执行的任务Job数量。设置为 2意味着该 Jenkins 服务器自身最多能同时跑 2 个构建任务。注意:这里这个主节点如果你添加了多个Agent从节点每个节点都有自己独立的执行器数量设置。Jenkins URL访问地址:Jenkins 生成外部链接如邮件通知里的构建报告链接、钉钉回调链接时使用的根地址。如果你的 Jenkins 需要通过内网 IP 或域名例如http://192.168.1.100:8080被其他同事访问请务必将其改为对应的具体 IP 或域名。否则邮件或消息里的链接点击后会无法打开。System Admin e-mail address系统管理员邮箱地址:这是 Jenkins 发送邮件通知如构建失败提醒时邮件头里显示的“发件人”From。注意: 这里必须填写一个真实有效的邮箱地址通常是公司内部邮箱或专门用于通知的邮箱否则 SMTP 邮件服务器可能会拒绝发送导致无法收到构建结果通知。Global properties全局属性:在这里能设置全局属性,这是整个 Jenkins 的“全局变量池”,Environment variables(环境变量): 勾选上后,可以设置全局环境变量(key-value),该变量会被注入到所有流水线Pipeline和自由风格任务Freestyle的构建过程中。Disk Space Monitoring Thresholds磁盘空间监控阈值:相当于给 Jenkins 主目录所在的磁盘分区装了一个“水位报警器”。Jenkins 会定期检查磁盘剩余空间。若剩余空间低于“Warning”阈值如 1GB系统会在界面顶部显示黄色警告若低于“Unhealthy”阈值如 500MBJenkins 将暂停接收新的构建任务以防止因磁盘写满导致日志损坏或系统崩溃。注意: 通常建议 Warning 设为 5GBUnhealthy 设为 2GB。Tool Locations工具位置:用于覆盖特定构建工具如 JDK、Maven、Ant、Git 等的默认安装路径,这里通常不填因为大多数情况下你会在“Global Tool Configuration”全局工具配置中统一管理 JDK 和 Maven 的版本安装Usage Statistics使用统计和崩溃报告:勾选后Jenkins 会匿名上传插件使用频率、构建时长、错误堆栈等信息给 Jenkins 官方社区。Jenkins 配置实时任务以下以Gitee为例:在Gitee平台配置Webhook网络钩子设置钩子触发事件在jenkins平台配置Poll SCM。Poll SCM像是一个“定时侦察兵”,按照设定的时间表如每5分钟去检查代码仓库如Git、SVN是否有新的提交或变更。一旦检测到代码有更新Poll SCM 会触发一个独立的“构建任务”Build Job。这个任务才会真正地去进行拉取最新代码、执行编译、打包自动化测试自动化部署等一系列操作(需要提前编写相应的脚本)。以上整个设置 就是 代码push后或Poll SCM定时检测到源码更新就会立马自动“构建任务”push时是直接向Jekins发送构建请求与Poll SCM 是独立两条线互不干扰一般为了避免重复构造我们选择其中一种方式即可。Jenkins构建后发送邮件1、开通邮箱SMTP服务登录邮箱后台在账户设置中找到SMTP服务设置并开启对于Gmail需要开启IMAP服务并设置两步验证以获取应用专用密码对于QQ邮箱直接开启SMTP服务并获取授权码。2、在Jenkins中配置SMTP服务点击“Manage Jenkins”—“Manage Plugins”在“Available”标签页中搜索并安装Email Extension Plugin等邮件发送相关的插件在Jenkins管理界面点击“Manage Jenkins”—“Configure System”滚动到“E-mail Notification”部分填写SMTP服务器信息包括SMTP服务器地址、端口号、发送者邮箱地址、邮箱授权码或密码、默认内容类型文本或HTML、主题、收件人列表等。