在 macOS 下用 Bamboo 实现可持续集成
几经磨难以后,终于在 KVM 中跑起了 macOS 虚拟机。
当初答应过大家会做一个自动化编译的后记,说到做到。还是老样子,继续使用 Atlassian 全家桶配套的 Bamboo 来做可持续集成。
准备工作
在进入正题之前,我们需要做以下的准备工作:
- 安装 Xcode
- 安装 Brew
- 安装 Ruby
- 安装 Shenzhen
安装 Xcode
这个没有什么好说的了,Mac App Store 直接下载安装。如果是公共服务器,不想用自己的 Apple ID 登录的话,也可以登录 Apple Developer 网站下载。
Stack Overflow 有个不错的回答,大家可以参考下:http://stackoverflow.com/questions/10335747/how-to-download-xcode-4-5-6-7-8-and-get-the-dmg-or-xip-file?answertab=votes#tab-top
安装 Brew
Brew 也介绍过好多次了,不了解的同学可以看这里。
一行命令搞掂。
1 | /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" |
安装 Ruby
为了不破坏系统自带的 Ruby,我还是习惯性安装一个新版本的,另外升级什么的也比较方便。
1 | $ brew install ruby |
更新 Ruby Gem 镜像
官方的镜像经常无法访问或者出现各种各样的异常,所以使用 Ruby China 的镜像就好了。
1 | $ gem sources --add https://gems.ruby-china.org/ --remove https://rubygems.org/ |
今天写文章才发现,原来的大阿里淘宝镜像也合并到 Ruby China 了,有意思。
安装 Shenzhen
Shenzhen 并不是我们理解的深圳市,而是一个基于 Xcode 6 API 的命令行编译工具。嗯,好像 Xcode 6 是有点旧了……
写这篇文章的时候发现了一个新的叫做 gym 的东东,看来稍后要有新的东西研究了,毕竟现在都开始往 Swift 3 迁移了。似乎 Shenzhen
并不能很好的支持一些新的特性了。
安装依然很简单很粗暴:
1 | $ gem install shenzhen |
自动化编译
这个步骤比较啰嗦和繁琐,但是基本上都是基于 Apple 的要求。
简单说,就是参考其他文章生成签名的证书或者是导入已有证书。
然后打开需要自动化编译的项目,配置好 Team 和 Bundle ID。
有了 Shenzhen
这个工具,我们只需要一个命令行就可以解决编译的问题了。
命令行进入项目目录,运行 ipa build
命令来编译 iOS App:
1 | $ cd project |
就是这么简单,就可以命令行编译 iOS 的应用了。
自动启动 Bamboo Agent
最后是配置 Bamboo Agent,好让 Bamboo Server 可以把任务发到 Mac 上编译。
之前都是先启动好 Mac,然后登录,然后开终端,手动运行 Bamboo Agent,但是这个真的是太傻缺了。
所以新搭建的环境,要再自动化一点。看了下文章,编写了如下配置文件:
1 |
|
将该文件保存为 com.atlassian.bamboo-agent.plist
便可,当然也可以是你自己喜欢的名字。
注意:这里的
SessionCreate
一定要加,否则security cms
无法提取 provisioning 文件中的信息,一直报 write permission 错误,导致无法正确签名,这里查了好久。
另外注释了两个 log 输出,因为 Bamboo Server 本身也会记录,有需要的可以自行打开。
在设置守护进程之前,记得务必要先用 builder
用户单独运行一次 Bamboo Agent,以便生成用户目录下的 bamboo-agent-home
目录。相关的操作直接按照 Bamboo Server 上 Remote Agent 安装说明一步一步操作就好了。
最后把写好的配置文件扔到系统守护进程目录里面,并启动之:
1 | $ sudo mv com.atlassian.bamboo-agent.plist /Library/LaunchDaemons/ |
检查一下看看是不是已经在运行了:
1 | $ ps aux | grep bamboo |
一切正常,在 Bamboo Server 上配置一个 Plan,运行一下编译,成功生成 IPA 文件,收工。