配置 TeamCity 自动化打包iOS(更新到Xcode9)

2018-02-11 14:05:09来源:https://izixia.cn/pei-zhi-teamcity-zi-dong-hua-da-bao-ios-ge作者:KissSummer人点击

分享
工具选择

目前流行的自动化集成有Jenkins和TeamCity。Jenkins功能很强大,更新也很快,而且免费。Teamcity在一定范围内不用收费,免费版的可以建10个 build,最多支持最多3个 build Agents。对小团队非常简单而且容易上手。Teamcity的功能非常强大,比较吸引我的是能够非常清晰的进行 Code Review 。


安装

条件


Mac 一台,Macmini最为实惠,土豪可以考虑MacPro。。。
安装Xcode

你可以从 这里 下载最新版本的Teamcity,下载后解压缩到文件夹。安装过程很简单,可以从 简书 上看到完整的安装流程,基本上就是启动,然后登陆 http://localhost:8111


启动命令


/yourPath/TeamCity/bin/runAll.sh start

关闭命令


/yourPath/TeamCity/bin/runAll.sh stop

进主页前的设置都可以在 简书 的这篇文章上看到。


配置xcode项目
创建项目

点击右上角的 Administration 进入管理页, 然后在页面的左上角可以看到 Pojects ,点击 Create project 。


在这里我遇到了第一个坑,那就是公司的 Git 服务器用的是 ssh://git@xxx/xx 的 SSH 方式的连接,而在这个项目页的 Repository URL 只能支持 http(s):// 或者 git:// 。 无法添加项目库到项目中,没关系我们可以绕着走,在创建项目的时候选择 Manually 方式,在之后添加。 如果你是 http(s):// 或者 git:// 恭喜你可以直接到下一节了,如果是 SVN:// ,咳咳。。。(Teamcity 当然也只)你也可以直接到下一节。


编辑项目

点击你刚建立的项目,然后点右上角的 Edit project Settings , 你就可以进入项目的配置页。


我们可以选择建立一个 VCS Roots,在 Fetch URL 栏填入 SSH:// 的地址,输入 UserName 和 Password 。其他可以默认。选择 Save 。



返回项目配置页,添加一个新的 Create build Configuration ,在这一步中选择左上角的 Version Control Settings 。 选择 Attach VCS Root



选择你刚添加的 VCS Root ,点击 Attach



配置编译

到了关键的一步选择 Build Steps ,然后在 Runner type 中选择有 Command Line , 虽然这里自带了 Xcode ,但是非常不好用。打出的包是 *.app , 无法打包为 ipa ,所以为了简单处理,我直接用的是 xcodebuild , 这个命令也很简单也很灵活,比如命令如下:


xcodebuild -workspace <projectName>.xcworkspace -scheme <schemeName> archive -archivePath <appName>.xcarchive

详细的 xcodebuild 可以参考这里。


需要注意的是使用 scheme 需要在 Xcode 更改 scheme 。 选择 Product->Scheme->Manage Schemes ,选择你的APP名称,然后更改为 APPNAME workspace 并在最后 Shared 的位置打钩。


如上面的方式新建一个 Command Line , 然后输入下面的命令:


xcodebuild -exportArchive-archivePath <projectName>.xcarchive -exportPath Build-exportOptionsPlist xxx/build.plist

xcode9 更新后,查看 man xcodebuild 的 -exportArchive 命令已经变化取消了 -PROVISIONING_PROFILE_SPECIFIER ,移动到了 -exportOptionsPlist 的文件中。查看支持的 key 可以使用 xcodebuild -help 来查看。


如何找到你的证书名称呢,选择你的 projectName.project ,注意这里是你的 project 名称,选择 show package contents ,用文本编译器打开 project.pbxproj 文件,搜索 PROVISIONING_PROFILE_SPECIFIER , 选择一个你可以用的证书。


在你的项目下新建一个 plist 文件。然后输入以下内容:


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>provisioningProfiles</key>
<dict>
<key>app1bundler</key>
<string>app1ProvisoningProfiles</string>
<key>app2bundler</key>
<string>app2ProvisoningProfiles</string>
</dict>
<key>method</key>
<string>development</string>
</dict>
</plist>

配置完后返回 General Settings ,点击 Show advanced options ,在 Artifact paths 中输入 buildiPa/**.ipa 。


完成后点击 右上角 Run 以下看看是否能够打包成功。错误信息可以再 build log 中进行查看。


如果提示签名错误,对codesign进行授权可以解决问题:


security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k yourpassword ${KEYCHAIN}

参考 远程打包失败 这篇文章,我们可以使用 SSH 登陆远程主机,然后执行以上命令。为了一劳永逸,我们可以在 Build Steps 中在第一步 添加 command Line ,输入以上命令。这样在每次打包前都会先解锁 Keychain 。


配置邮件通知

如果公司不方便,可以申请一个 hotmail 的邮箱,通过自己的手机验证后就能发送邮件了。


选择 右上角的 Administration ,然后在左侧选择 Email Notifier 。 微软的 SMTP 服务器地址为 smtp-mail.outlook.com 。


建好 Email 发送后,还是在左侧选择 Groups ,然后进入 Notification Rules ,先建一个 Rule ,如我的配置如下



好了至此已经完工,可以享受自动化打包带来的美丽享受了。


最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台