先如今,使用脚本打包,进行app的持续化集成已经成为常态,
不用在耽误时间进行打包的管理,
比较浪费研发的时间,打包的时候,还不太好切换分支,
所以准备一台低配置的mac mini ,
作为公司内网的一台打包服务器,快乐的进行脚本打包吧
整体流程
物料准备
- 一台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/.jenkins
下 config.xml
文件会记录登录账户的信息
如果不小心忘记了密码,还有很多方式可以找回,总是Jenkins 是一个很健全稳定的网站
安装Jenkins插件
点击系统管理-管理插件-可选插件,可以搜索插件,公司项目是托管在gitHub上的,所以我选的插件有(用其他托管代码的可以对应选择插件),
- GitHub
- GitHub API Plugin
- GitHub Branch Source Plugin
- GitHub Integration Plugin
- Xcode integration
后期做单元测试,还有其他很多好玩的插件相配合
打包Job 配置
点击新建Item-输入项目名(建议所有名统一用工程名,避免出现各种坑)-构建一个自由风格的软件项目-确定
基础配置 描述可以随意填写
-
源码管理
-
参数化构建
打包脚本
#切换到当前的打包分支
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打包脚本示例
功能支持
- build 自动增1,并上传github, 不使用时间戳,是因为可读性较差
- 脚本提交pull request
- 打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
其他
- mac电脑 固定ip
- mac 不要休眠
- 每日构建定时器打包,小团队感觉没有必要,并且浪费磁盘空间,保存打包的符号表,linkmap等重要文件
个人感悟
- 这种配置,相对比OSX Service 的XCode bot 打包服务器好用很多
- Jenkins 很强大,插件很好用
- Fastlane 越来越稳定,功能也越来越健全