Jenkins CI for iOS:值不值得学
这门资料解决的核心问题,是 iOS 开发中“手动打包与质检”带来的效率损耗。很多团队的日常是:开发写完代码,手动连真机测试,手动 Archive 导出 ipa,再手动传给测试。一旦遇到频繁改 Bug,打包就成了纯粹的体力活,还容易因为本地环境不一致导致“在我电脑上没问题”的扯皮。这套资料把 CI(持续集成)真正落地到了 iOS 场景,它不是泛泛讲 Jenkins 怎么装,而是从代码变动、自动化质检到组件打包,串起了一条真实的流水线。如果你每天还在重复手动构建,或者团队急需一套自动化的代码准入机制,这门课就值得花时间看;如果你只是写写个人小项目,暂时不涉及多人协作和频繁发版,优先级可以往后排。
适合什么基础与建议先看哪几块
看这套资料前,你需要具备基础的 iOS 开发能力,熟悉 Git 命令和 Xcode 的常规打包流程,最好对 Shell 脚本有基本概念。完全没接触过命令行的新人会有些吃力。拿到资料后,建议不要从头按部就班顺看,而是先看第一部分里关于“需求开发生命周期”和“CI Pipeline”的内容,建立流水线的全局认知;接着直接跳到 Jenkins 本地安装与创建第一个 Job 的章节,把环境跑通。很多人学 CI 容易卡在环境配置上,尤其是 SSH 免密 Clone 仓库这块,资料里刚好有对应场景,建议边看边在自己电脑上复现,不要只停留在看视频阶段。
学完能独立做什么与资料怎么配合练习
学完后,你应该能独立为一款 iOS 应用搭建基础的自动化构建流程。具体来说,能配置 Jenkins 拉取远端 Git 代码,自动执行编译检查,并在代码提交时触发流水线,最终产出可供测试的安装包。这相当于替团队搭好了一个不知疲倦的“打包机器人”。配合资料练习时,核心原则是“边看边搭”。不要把视频当爽文看,准备一台干净的 Mac,跟着视频一步步装 Jenkins、配 SSH 密钥、写构建脚本。遇到编译报错先自己查文档,因为真实工作中的 CI 环境远比视频复杂,脚本权限、依赖冲突都是常态。建议先跑通一个最简单的“拉代码+编译”任务,再逐步加复杂度,把学到的流水线拆分方法用到自己的实际项目里。
学会在 iOS 开发中,如何使用 jenkins 来实现各种各样的自动化任务!
课程目录
* 01 介绍 CI for iOS/
* 01 CI 不是仅仅指打包.mp4 07:13
* 02 CI Pipeline.mp4 06:26
* 03 从一个需求开发的生命周期说起.mp4 02:44
* 04 划分整个生命周期.mp4 07:11
* 05 阶段1:变动代码的自动化质检流程 pipeline.mp4 04:28
* 06 阶段2:组件、应用的 Web CI 系统.mp4 04:28
* 07 主流的 CI 工具.mp4 04:46
* 08 课程内容安排.mp4 05:25
* 02 jenkins 基础使用/
* 01 本地安装 jenkins.mp4 05:41
* 02 创建、触发第一个 jenkins job.mp4 05:56
* 03 ssh 免密码方式 clone git repo.mp4 14:18
* 04 source 配置在 CI 机器上的变量.mp4 06:36
* 05 job 结束时,展示二维码图片.mp4 09:41
* 06 curl 触发 job.mp4 07:10
* 07 ruby 封装 curl 命令.mp4 14:51
* 08 ruby net/http POST 请求触发 job.mp4 06:25
* 03 手动化的组件开发过程/
* 01 App(壳)与 组件.mp4 04:33
* 02 组件 - 本地开发.mp4 05:57
* 03 组件 - new_feat 开发分支 - 合并请求.mp4 05:09
* 04 组件 - new_feat 开发分支 - 自动化流程.mp4 05:53
* 05 组件 - 主干分支 - 发布版本号.mp4 10:10
* 06 组件 - 版本号 - pod repo push.mp4 22:46
* 07 组件 - 版本号 - 提测 - 集成.mp4 12:39
* 08 组件 - 版本号 - 集成 - 请求.mp4 02:31
* 09 组件 - 版本号 - 提测、集成 - 流程简化.mp4 04:36
* 10 iOS CI/CD 自动化流程简介.mp4 08:14
* 04 Jenkins 配置 ruby 环境/
* 01 初始化 App 项目的 fastlane 环境.mp4 06:57
* 02 尝试将 App 项目跑在 Jenkins 环境下.mp4 02:55
* 03 Jenkins job shell 无法直接使用 RVM.mp4 02:21
* 04 RVM 给出的 Jenkins CI 使用文档.mp4 06:44
* 05 解决 JOB shell 中 RVM 无法切换 gemset.mp4 08:31
* 06 App 项目保留 Gemfile.lock?.mp4 09:03
* 07 App 项目「不」保留 Gemfile.lock?.mp4 02:17
* 05 让流程自动化/
* 01 自动化到底是要做什么?.mp4 02:58
* 02 组件(仓库) - 变动分支 - 合并1.mp4 13:14
* 03 组件(仓库) - 变动分支 - 合并2.mp4 14:33
* 04 组件(仓库) - 版本号 - 发布.mp4 28:00
* 05 组件(仓库) - 版本号 - 集成 - CocoaPods.mp4 10:02
* 06 组件(仓库) - 版本号 - 集成 - 独立文件.mp4 06:54
* 07 组件(仓库) - 版本号 - 集成 - 自定义工具.mp4 13:06
* 08 组件(仓库) - 版本号 - 集成 - 具体实现.mp4 15:34
* 09 App(仓库) - 创建 - 新版本.mp4 22:17
* 10 App(仓库) - 创建 - 新版本 - 重构.mp4 15:14
* 11 App(仓库) - 创建 - 新版本 - add tag.mp4 12:59
* 12 App(仓库) - 创建 - 新版本 - 最终版.mp4 02:05
* 13 App(仓库) - 更新 - 已有版本.mp4 09:54
* 14 App(仓库) - 打包、发布、提审.mp4 15:22
* 06 通用化 CI 处理流程/
* 01 打造 跨多语言、跨多 App 的 CI 执行流程.mp4 10:22
* 02 前面实现的那些自动化 job 存在的问题.mp4 09:44
* 03 如何做到 跨多语言、跨多App ?.mp4 14:46
* 04 1 抽象接口 与 n 具体实现.mp4 21:48
* 05 接口中增加:输入 和 输出.mp4 09:04
* 06 输入.mp4 12:48
* 07 输出.mp4 02:47
* 08 接口中增加:workspace、app.mp4 14:40
* 09 将App中的CI脚本,独立到一个仓库内.mp4 25:40
* 10 脚本仓库,具体实现一个自动化能力.mp4 08:05
* 11 .my-ci.yml 解析器.mp4 04:50
* 12 .my-ci.yml 解析器,要做的事情.mp4 13:45
* 13 确定 .my-ci.yml 解析器的外部调用.mp4 26:29
* 14 initialize.mp4 13:04
* 15 main.rb.mp4 08:01
* 16 task begin 和 end.mp4 04:55
* 17 write input/output file.mp4 06:10
* 18 clone app.mp4 10:25
* 19 read app .my-ci.yml.mp4 09:12
* 20 exec app .my-ci.yml.mp4 35:12
* 21 app script output.mp4 18:40
* 07 跑在 jenkins 环境/
* 01 准备将前面一系列操作,都放到jenkins中.mp4 02:23
* 02 准备3个git仓库.mp4 05:46
* 03 增加 App/.my-ci.yml 自动化能力描述文件.mp4 08:09
* 04 每一个能力都单独对应一个JOB.mp4 35:22
* 05 所有JOB都调用 .my-ci.yml 解析库.mp4 21:18
* 06 最终调用的 toolbox 脚本库.mp4 19:04
* 08 master 与 slave 主从节点/
* 01 1 master + N slave.mp4 05:53
* 02 打开 JOB 并发.mp4 06:40
* 03 1个 master 主节点.mp4 02:33
* 04 修改 jenkins 服务的 ip 和 port.mp4 06:20
* 05 N个 slave 子节点.mp4 22:15
* 09 jenkins Pipeline/
* 01 创建一个 pipeline 形式的 JOB.mp4 07:38
* 02 jenkinsfile pipline 语法.mp4 02:12
* 03 pipeline 节点.mp4 01:48
* 04 agent - post.mp4 18:28
* 05 stages - stage - steps.mp4 06:50
* 06 steps 使用 内置命令.mp4 06:54
* 07 环境变量.mp4 07:45
* 08 自定义 环境变量.mp4 06:54
* 09 if 环境变量 else.mp4 02:11
* 10 def 定义变量.mp4 02:21
* 11 options 设置 pipeline 或 stage.mp4 03:51
* 12 parameters 设置 pipeline 所需参数.mp4 08:39
* 13 triggers 定时器.mp4 11:29
* 14 when 条件执行 stage.mp4 08:51
* 15 if else 条件执行 steps 内的脚本.mp4 03:35
* 16 script 脚本域.mp4 03:49
* 17 script 内使用 try - catch.mp4 01:42
* 18 parallel 并行多个 stage.mp4 12:13






