Jenkins + XCode + TestFlight + Fastlane 手把手搭建iOS的CI系统

先如今,使用脚本打包,进行app的持续化集成已经成为常态,
不用在耽误时间进行打包的管理,
比较浪费研发的时间,打包的时候,还不太好切换分支,
所以准备一台低配置的mac mini ,
作为公司内网的一台打包服务器,快乐的进行脚本打包吧


整体流程

fastlane打包流程.png

物料准备

  • 一台Mac 打包服务器 ,一般配置即可,推荐二手MacMini

用自己开发的电脑也是可以,笔者就是用自己的电脑,在打包过程中,启动Jenkins 服务,会占用cpu 较为严重,亲测还好

iOS 无法在linux 上打包,原因是XCode 只能在OSX 系统上安装,若非要在Linux 上实现,可以建立节点,不过太复杂了

  • 安装 Java8 环境,最新版 Jenkins 运行在Java8 环境,如果安装多个Java 环境,也无妨
  • XCode,ruby,fastlane 等iOS开发常见软件
  • 在打包机器上授权打包证书可信任,打包工程上配置release模式下打包环境

Jenkins 安装&部署

homebrew 直接安装最新版2.144

$ brew install jenkins

jenkins 常见命令

jenkins -h //启动Jenkins
control + c //快捷键关闭Jenkins

配置jenkins 管理员账号和密码

打开浏览器,进入 http://localhost:8080/ 如果没有效果,看下shell 中Jenkins 的日志,日志还是较为详细的
根据网站提示,简单配置就行,毕竟我们是局域网,内网访问下
配置完毕在jenkins工作目录 /Users/XXXX/.jenkinsconfig.xml 文件会记录登录账户的信息
如果不小心忘记了密码,还有很多方式可以找回,总是Jenkins 是一个很健全稳定的网站

安装Jenkins插件

点击系统管理-管理插件-可选插件,可以搜索插件,公司项目是托管在gitHub上的,所以我选的插件有(用其他托管代码的可以对应选择插件),

  • GitHub
  • GitHub API Plugin
  • GitHub Branch Source Plugin
  • GitHub Integration Plugin
  • Xcode integration

后期做单元测试,还有其他很多好玩的插件相配合

Jenkins插件安装

打包Job 配置

  • 点击新建Item-输入项目名(建议所有名统一用工程名,避免出现各种坑)-构建一个自由风格的软件项目-确定

  • 基础配置 描述可以随意填写

  • 源码管理


    git地址配置
  • 参数化构建


    参数化构建配置
  • 打包脚本

#切换到当前的打包分支
git checkout $branch  
#拉取fastlane 和 cocospod
bundle install
#拉取pod 库
pod install --repo-update
#fastlane 打包脚本
fastlane beta
  • 构建后操作
    构建时可能会生成多个文件,只将自己需要的文件做存档
    打开项目配置-> 构建后操作 -> Archive the artifacts
    在存档文件中输入需要存档的文件,多个文件以 “,“(逗号) 分割,存档文件默认路径为 WORKSPACE ,存档文件的相对路径既是 WORKSPACE 并且是以正则表达式路径、文件名去匹配需要存档的文件
    我构建的ipa 存放在 WORKSPACE目录下,存档文件写为 */.ipa
归档成品
  • 常见打包日志,分析构建流程


    打包日志
打包成功日志

FastLane 脚本编写

fastlane beta打包脚本示例

功能支持

  1. build 自动增1,并上传github, 不使用时间戳,是因为可读性较差
  2. 脚本提交pull request
  3. 打testflight 包,且自动上传到testflight

浅析

  lane :beta do 
    #build 版本号自动增1,使用fastlane 自带Action 
    increment_build_number
    #指定工作目录下当前工程
    build_app(workspace: "Vite.xcworkspace", scheme: "Vite")
    #上传testflight,会使用fastlane的缓存配置,里面有上传账号的信息
    upload_to_testflight
    #将自增的版本号代码,上传到github仓库
    push_git
  end

fastlane 有很多好玩的Action

其他

  1. mac电脑 固定ip
  2. mac 不要休眠
  3. 每日构建定时器打包,小团队感觉没有必要,并且浪费磁盘空间,保存打包的符号表,linkmap等重要文件

个人感悟

  • 这种配置,相对比OSX Service 的XCode bot 打包服务器好用很多
  • Jenkins 很强大,插件很好用
  • Fastlane 越来越稳定,功能也越来越健全
  • 终于搞完了!!!
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,290评论 6 491
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,107评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,872评论 0 347
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,415评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,453评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,784评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,927评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,691评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,137评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,472评论 2 326
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,622评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,289评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,887评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,741评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,977评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,316评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,490评论 2 348

推荐阅读更多精彩内容

  • 用到的组件 1、通过CocoaPods安装 2、第三方类库安装 3、第三方服务 友盟社会化分享组件 友盟用户反馈 ...
    SunnyLeong阅读 14,604评论 1 180
  • 目前能够提供WEB网络服务的程序有Apache、Nginx或IIS等等; 在Windows系统中默认Web服务程序...
    G木头人阅读 225评论 0 0
  • 有一个词叫一见钟情,有一句话叫陪你一生,宠你一生,爱你一生,我的命你想要就拿去,我只要你的人,你的心,只属于我,陪...
    牵绊余生系列阅读 180评论 0 0
  • 面对焦虑 今天的这篇文章,我在前期学习区块链的过程当中进行了反复阅读,因为尽管现在市面上的很多书籍,对区块链都进行...
    草稿记录阅读 185评论 0 0
  • 【广告 Recently, I was browsing different kinds of informati...
    MayhemP阅读 458评论 0 0