|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
你可能还需要学习使用Xcode这个开发环境,接著你需要掏钱向苹果注册开发者权限,基本的帐号是99美金。本视频为“斯坦福大学iPhone开发教程”,51CTO将不断关注本视频教程的更新进度,为大家提供最新的视频。你是不是已经试着为你的iOS项目搭建一台撑持延续集成的服务器,从我的团体履历而言,这可不是一个轻松的活。你必要筹办一部Mac,安装好全体所需的软件和插件。你要卖力办理一切的用户账户并供应平安回护。
底本你想节俭的工夫,终极你会发明你消费了大批的工夫往保护这台服务器。不外假如你的项目托管在GitHub上,如今有了新的但愿:TravisCI。该服务能够为你的项目供应延续集成的撑持,也就意味着它会卖力好托管一个项目标一切细节。在Ruby的天下中,TravisCI已久负盛名。从2013年4月入手下手,Travis也入手下手撑持iOS和Mac平台。
在这篇文章中,我会向你展现怎样一步步为你的项目集成Travis。不但包含编译项目和举行单位测试,还可以将你的使用投送到你一切的测试设备上。为了演示,我在GitHub上放了一个示例项目。在这篇文章的最初,我会教你怎样用Travis往定位程序中的毛病。
GitHub集成
我最喜好Travis的一点就是他与GitHub的WebUI集成的十分好。比如pull哀求。Travis会为每次哀求都实行编译操纵。假如统统一般,pull哀求在GitHub上看起来就像如许:
<br>
万一编译不乐成,GitHub页面会响应的改动色彩赐与提示:
<br>
链接Travis和GitHub
让我们看一下怎样链接你的GitHub项目到Travis。利用你的GitHub账号上岸Travis。关于公有事情目次,你必要注册一个Travis专业版账号。
上岸乐成后,你就能够为你的项目翻开Travis撑持。找到属性页面,在此列出了你的一切GitHub项目。不外要注重,假如你今后创立了一个新的事情目次,要利用Syncnow按钮举行同步。Travis只会偶然更新你的项目列表。
<br>
如今只必要翻开这个开关就能够为你的项目增加Travis服务。今后你会看到Travis会和你的GitHub项目设置相干联。下一步应当告知Travis当它收到项目修改以后该做甚么。
轻量级的项目设置
TravisCI必要你的项目标一些基础信息。在你项目标根目次创立一个名叫.travis.yml的文件,内容以下:
1
language:objective-c
Travis编译器运转在假造机情况下.已利用Ruby,Homebrew,CocoaPods和一些编译剧本举行过设置。上述的设置项已充足编译你的项目了。
预装的编译剧本会剖析你的Xcode项目,编译项面前目今的一切Target。假如一切文件都没有编译毛病测试也没有跳进项目就编译乐成了。如今能够将你的修改Push到GitHub看看能乐成编译。
固然这看起来仿佛很复杂,不外对你的项目纷歧定合用。几近没有甚么文档来引导用户怎样设置默许的编译举动。举个栗子,有一次我没有效摹拟器的SDK招致反省使用署名时产生了毛病。假如方才谁人最轻量级的设置对你的项目不合用的话,让我们来看一下怎样用定制的编译命令来合用Travis。
界说编译命令
Travis利用命令行来编译你的项目。因而,第一步就是使项目可以在当地编译。作为Xcode命令行工具的一部分,Apple供应了xcodebuild命令。
翻开你的终端输出:
1
xcodebuild–help
这会列出xcodebuild可用的一切参数。假如命令实行不乐成,确保你的命令行工具已乐成安装。一般一个罕见的编译命令看起来像如许:
1
xcodebuild-project{project}.xcodeproj-target{target}-sdkiphonesimulatorONLY_ACTIVE_ARCH=NO
利用iphonesimulatorSDK是为了不使用署名毛病。这是必需的一步直到我们稍后引进证书为止。经由过程设置ONLY_ACTIVE_ARCH=NO我们能够确保在摹拟器的架构下编译。你也能够设置分外的属性。用manxcodebuild来浏览文档。
关于利用CocoaPods的项目,你必要指定workspace和scheme。
1
xcodebuild-workspace{workspace}.xcworkspace-scheme{scheme}-sdkiphonesimulatorONLY_ACTIVE_ARCH=NO
Schemes是由Xcode主动天生的,但这在服务器上不会产生。确保一切的scheme都被设为shared并到场到事情目次中。不然它只会在当地事情而不会被TravisCI辨认。
<br>
我们的示例项面前目今的.travis.yml文件如今应当看起来像如许:
1
2
3
language:objective-c
script:xcodebuild-workspaceTravisExample.xcworkspace-schemeTravisExample-sdkiphonesimulatorONLY_ACTIVE_ARCH=NO
运转测试
一般关于测试来讲你会利用以下的命令(注重test属性)
xcodebuildtest-workspace{workspace}.xcworkspace-scheme{test_scheme}-sdkiphonesimulatorONLY_ACTIVE_ARCH=NO
不幸的是xcodebuild其实不能撑持多target和iOS的使用测试。苹果已在动手办理这个成绩,不外我倡议利用Xctool来取代。
Xctool
Xctool是来自Facebook的命令行工具,他能够匡助你加倍轻松快速的编译测试你的使用。他的黑色输入信息比xcodebuild加倍简便直不雅,布局明晰。同时还增加了对逻辑测试,使用测试的撑持。
Travis中已预装了xctool。要在当地测试的话,必要用Homebrew先安装xctool:
1
2
3
brewupdate
brewinstallxctool
用法十分复杂,xctool利用跟xcodebuild不异的参数:
xctooltest-workspaceTravisExample.xcworkspace-schemeTravisExampleTests-sdkiphonesimulatorONLY_ACTIVE_ARCH=NO
这要这些命令在当地能一般事情,我们就能够把他们增加到.travis.yml文件里:
language:objective-c
script:
–xctool-workspaceTravisExample.xcworkspace-schemeTravisExample-sdkiphonesimulatorONLY_ACTIVE_ARCH=NO
–xctooltest-workspaceTravisExample.xcworkspace-schemeTravisExampleTests-sdkiphonesimulatorONLY_ACTIVE_ARCH=NO
今朝我们所增加的设置已充足编译一个框架类的使用。我们可以包管项目能够一般编译并经由过程测试。但关于真实的iOS使用来讲,我们但愿在实在的物理设备长进行测试。很明显,我们要借助Travis来帮我们主动部署。全部历程的第一步,我们必要给我们的使用署名。
使用署名
为了在Travis中给我们的使用署名,我们必要筹办好一切需要的证书和设置文件。就像每一个iOS开辟职员晓得的那样,这多是最坚苦的一步。前面我们将写一些剧本来匡助我们在服务器上给使用署名。
证书和设置文件
从苹果的设置页面中下载大概从你的Keychain中导出,将它保留到你的项目目次下scripts/certs/apple.cer这个地位。
2.iPhone公布证书+私钥
假如你还没有一个iPhone公布证书你必要创立一个。上岸你的苹果开辟者账号,你能够跟从上面的步骤创立一个临盆情况的新证书(Certificates>Production>Add>AppStoreandAdHoc)。确保你已下载并安装了这个证书。今后你能够在你的Keychain中找到它,另有一个绑缚的私钥。如今翻开你Mac上的Keychain使用:
<br>
右击证书选择导出将其放在scripts/certs/dist.cer路径,在导出绑缚的私钥,保留到scripts/certs/dist.p12。能够依据你的必要设置一个暗码。
Travis必要晓得你的私钥暗码,我们必要将其贮存在某个中央。明显我们不想用复杂的文原本存储这个暗码。我们能够使用Travis的平安情况变量。翻开终端进进包括.travis.yml文件的目次。起首用geminstalltravis命令安装Travisgem。安装完成后你就能够用以下命令增加暗码:
travisencrypt“KEY_PASSWORD={password}”–add
如许就能够安装一个叫做KEY_PASSWORD的加密情况变量到你的.travis.yml设置文件。在任何能够被TravisCI实行的剧本中都可使用这个变量。
3.iOS挪动设备存案文件(公布用)
假如你还没有一个公布用的挪动设备存案文件。依据你的开辟者账号范例,你能够选择AdHoc大概InHouse两种分歧的存案文件(ProvisioningProfiles>Distribution>Add>AdHocorInHouse).下载将其保留到scripts/profile/目次下。
我们必要在Travis中会见此存案文件,以是我们必要将此文件的名字存储为一个全局变量。比如我们能够将其定名为TravisExample_Ad_Hoc.mobileprovision,像如许增加:
1
2
3
4
5
env:
global:
-APP_NAME="TravisExample"
-DEVELOPER_NAME="iPhoneDistribution:{your_name}({code})"
-PROFILE_NAME="TravisExample_Ad_Hoc"
这里另有两个声明的全局变量。APP_NAME一般指的就是你的项目主target的名字。DEVELOPER_NAME里是你在项目主target下XcodeBuildSettings中CodeSigningIdentity>Release内里看到的名字。最初搜刮一下你使用的AdHoc大概InHouse设置文件,将个中的黑体笔墨全体往失落。依据你设置的分歧,在一些属性的方括号内里大概不会有任何信息。
加密证书和存案文件
不外你的GitHub权限是公然的。你大概会想要给你的证书和存案文件加密,由于他们包括了你使用的主要信息。假如你利用的是一个公有目次,你能够跳过这一大节。
起首我们必要想出一个暗码来加密我们一切的文件。鄙人面的例子中,我们利用foo这个单词,你完整能够将其交换为利用于你项目标更平安的暗码。在命令行中必要利用openssl来加密这些敏感文件:
1
2
3
opensslaes-256-cbc-k"foo"-inscripts/profile/TravisExample_Ad_Hoc.mobileprovision-outscripts/profile/TravisExample_Ad_Hoc.mobileprovision.enc-a
opensslaes-256-cbc-k"foo"-inscripts/certs/dist.cer-outscripts/certs/dist.cer.enc-a
opensslaes-256-cbc-k"foo"-inscripts/certs/dist.p12-outscripts/certs/dist.cer.p12-a
如许能够创立.enc后缀的加密版本证书和设置文件。如今你能够删除大概疏忽那些原始文件。可是有一点万万不要提交未加密的证书与设置文件,不然它们会呈现在GitHub上。假如你不当心如许做了,立即往追求匡助。
如今我们的文件都已加密,我们必要告知Travis怎样解密。以是我们必要供应解密的暗码,利用之前创立KEY_PASSWORD变量一样的体例:
travisencrypt“ENCRYPTION_SECRET=foo”–add
Lastly,wehavetotellTraviswhichfilestodecrypt.Addthefollowingcommandstothebefore-scriptphaseinthe.travis.yml:
最初我们必要告知Travis那些文件必要解密。在.travis.yml文件的before-script阶段增加以下命令:
1
2
3
4
before_script:
-opensslaes-256-cbc-k"$ENCRYPTION_SECRET"-inscripts/profile/TravisExample_Ad_Hoc.mobileprovision.enc-d-a-outscripts/profile/TravisExample_Ad_Hoc.mobileprovision
-opensslaes-256-cbc-k"$ENCRYPTION_SECRET"-inscripts/certs/dist.p12.enc-d-a-outscripts/certs/dist.p12
-opensslaes-256-cbc-k"$ENCRYPTION_SECRET"-inscripts/certs/dist.p12.enc-d-a-outscripts/certs/dist.p12
如今你在GitHub上的都是平安的了,Travis能够一般的读取利用它们。可是另有一个平安成绩你必要晓得:在Travis的编译日记里大概会显现出解密的暗码,不外对pull哀求来讲不会呈现。
增加剧本
如今我们必要确保一切的证书都导进到TravisCI的钥匙串中。这一步我们必要在scripts文件夹上面增加一个新的文件add-key.sh:
1
2
3
4
5
6
7
#!/bin/sh
securitycreate-keychain-ptravisios-build.keychain
securityimport./scripts/certs/apple.cer-k~/Library/Keychains/ios-build.keychain-T/usr/bin/codesign
securityimport./scripts/certs/dist.cer-k~/Library/Keychains/ios-build.keychain-T/usr/bin/codesign
securityimport./scripts/certs/dist.p12-k~/Library/Keychains/ios-build.keychain-P$KEY_PASSWORD-T/usr/bin/codesign
mkdir-p~/Library/MobileDevice/ProvisioningProfiles
cp./scripts/profile/$PROFILE_NAME.mobileprovision~/Library/MobileDevice/ProvisioningProfiles/
这里我们创立了一个新的一时keychain叫做ios-build,个中包括了一切的证书。注重这里我们利用$KEY_PASSWORD来导进私钥。在最初一步,存案文件会拷贝到Library文件夹。
在创立这个文件后,确保赐与它可实行的权限。在命令行里输出chmoda+xscripts/add-key.sh。上面一切的剧本都必要实行这一步。
如今一切的证书和设置文件都已停当我们能够入手下手给我们的使用署名。注重必定要先编译使用再给其署名。因为我们必要晓得编译好的二进制文件的地位,我保举在编译命令中利用OBJROOT和SYMROOT这两个变量。别的,我们应当把SDK设置为iphoneos,configuration项改成Release。
xctool-workspaceTravisExample.xcworkspace-schemeTravisExample-sdkiphoneos-configurationReleaseOBJROOT=$PWD/buildSYMROOT=$PWD/buildONLY_ACTIVE_ARCH=NO
运转这个命令,你会发明使用编译后的二进制文件呈现在build/Release-iphoneos文件夹上面。如今我们可使用以下的剧本给使用署名和打包。
<p>1
2
3
4
5
6
7
8
9
10
11
12
13
14
#!/bin/sh
<p>if |
|