iOS CI (Jenkins + Phabricator + Slack)
shell
里 brew install jenkins
然后 jenkins
启动,牛腩器中输入 127.0.0.1:8080 跳坑
Jenkins 里 xcode
相关插件装上
步骤别的博客都有,Google _ios ci 持续集成_,比如:
版本可能旧一点,但能脑补上
我们这用的 Phabricator,由于是 iOS,放在本地 Mac 上而非服务器,所以私钥配好就行了,Jenkins 和 Phabricator 回调交互啥的就不管了
另外主要遇到几个问题:
jenkins.plugins.slack.ActiveNotifier hudson.model.listeners npe
test 推送消息却好好的
弄了俩小时也不知怎么回事,睡一觉第二天正常了…
貌似知道原因了,Project Channel 那里不能为空
ResourceRules.plist
第一天 提示 ResourceRules.plist 不对, 于是在工程和 Jenkins 配置里都加了这个
Custom xcodebuild arguments $(SDKROOT)/ResourceRules.plist
结果第二天提示找不到 ResourceRules.plist,Jenkins 里删掉这个反而 OK 了,真奇葩
iPhone Developer: no identity found
swift-stdlib-tool failed with exit code 1
去 developer.apple.com 下载了各种证书,都不管用
实在没办法,直接用 xcode 打开了 ~/.jenkins/jobs/****
下面的工程,想做个对比,结果发现 keychain 里多出来个证书,然后就 success 了…
另外企业账号还没买,Jenkins 没开账号系统,继续等坑
DUNS(邓白氏码)
之前企业账号一直卡在这里,苹果邮件迟迟没回应,所以一定要去电话苹果客服,一两天就 OK 了
bundle identifier
之前 company 账号中 .alpha .beta 占用掉了,企业账号这里无法创建相同的证书,只好删除原来账号里 或 改 ID
结果删除时发现需要 app 需要是其中几个状态,官方文档:TransferringAndDeletingApps
之前 beta 作为 testflight,并没上传 AppStore,Email 苹果,回复:
Currently, your app does not have at least one approved version.
…
只好改了 ID
over the air distribution
万事俱备了,赶紧导出,结果发现 Xcode 6 之后,导 ipa 只有一个 .ipa 没有配套的 .plist,要自己手写…(还好 Jenkins 还能自动生成),大致长这样的:plist ($ $ 里对应的改一下)
然后python -m SimpleHTTPServer
,iPhone 上 Safari 打开,结果… 还是不行…
后来发现服务器必须是 https 的…
build number
targets -> Build Phases -> + New Run Script Phase
1 | buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "${PROJECT_DIR}/${INFOPLIST_FILE}") |
这样 scheme 是 release 的时候,build 会自动 +1
PS:
其实这个可以写到 Jenkins build 步骤的 shell 中,然后 push 到 origin/master,再把 *.ipa 上传到服务器
OS X Server
坑,有时间整理一个
DistributionProvisioningProfiles
直接把下载的 *. mobileprovision
,写路径发现是不行的,只好自己手动打包
1 | xcodebuild -exportArchive -exportFormat IPA -archivePath "$Yourarchive" \ |
总结:
一路走来一路坑