xcode server代码管理-OS X Server
优点:持续集成是一种软件开发实践,即了解你合并的内容,时常合并。自动提交合并代码
原文:http://ios.jobbole.com/82240/
1.下载OS X Server
XCode需要 OS X Server开启持续集成服务。在Mac App Store上下载OS X Server一般要花费19.99美元。然而,iOS和Mac 开发者可以免费下载。接下来我们要进行免费下载。
浏览开发者门户的OS X 下载区,下载最新版本的OS X Server5(你需要登录你的开发者账户。)
现在点击已下载的安装包,安装OS X Server。
2.启用XCode Server
启动OS X Server(在你的应用程序文件夹下,名字为“Server.app”),点击Services下面的Xcode。
然后你需要告诉 OS X Server 使用哪一个XCode,点击“Choose Xcode…”,选择你的XCode 7(XCode 6 也可以)就可以了。
接下来,XCode Server需要花费大约30秒完成准备工作。之后点击右上角的ON 开关,状态文本将会变成“Starting”。当所有准备工作完成,开始运行的时候,可以看到一个绿色的圆点和“Available on your local network…”。
好了,你建立起一个XCode Server!
3.把工程从git上clone下来
通过SSH Key clone文件,无需输入账号和密码
1)生成ssh key:百度。。。
2)在github上添加key,复制SSH地址:git@git.xxx.git
3)finder新建文件夹Source,打开终端
$ cd 拖入Source文件
$ git clone git@git.xxx.git
4)此时也可使用GitHub管理:+ ->add->Source文件
4.在XCode中追加Server
在我们创建Bot之前,我们需要在XCode注册我们新创建的XCode Server。选择 XCode 的Preferences (CMD+,),然后选择“Accounts”,在底端点击加号按钮,选择“Add Server”。
点击“Add”之后,你会看到你的服务器被追加到XCode的Preference里面。
5. 创建一个Bot
我一直在说Bot,但是它们到底是什么东西呢?
Bot,是一个XCS 的专业术语,是一个构建工作的描述。它告诉XCode Server 代码位置,如何去生成以及测试代码,在生成结束以后通知哪些人等等。运行一次这样的Bot叫做集成。集成产生有价值的东西,比如archives、IPA、测试结果和日志。
现在来创建我们的第一个Bot。Bot的控制按钮隐藏在XCode左边区域的最后一列,Report导航栏下。
在左下方,点击齿轮图标和“Create Bot…”。
现在可以看到弹出了一个与下面类似的表单,注意,复选框要求你共享scheme。
这是什么意思呢?
Scheme 是你 xcodeproj j和 xcworkspace文件夹下的文件,描述了使用哪一个目标(例如 XCSTutorialProject1 - iOS app)和如何生成(例如Debug 或者 Release)。只有共享的schema才可以检入到你的代码库,并且只有这些共享的schema可以被持续集成服务例如XCode Server使用。
总体而言,schema是一个生成方案。所以要确保XCode Server可以看到它,这里我们通过共享实现(当在XCode里面编辑scheme的时候,点击Shared 复选框,这会将scheme加入到我们的代码库中)。
点击下一步,此处你的XCode将会检查是否有权访问你的(实际上,此处是我的)代码库。很有可能(如果你像我一样使用一个自签证书)会首先看到XCode抱怨“The server SSH fingerprint failed to verify.”这是XCode 7的新的特性,来防止MITM袭击。你需要点击“View”然后点击“Trust”。这意味着你声明:“没有问题,XCode。我了解并且相信这个XCode Server,不需要担心。”
然后,如果你还没有在XCode的Preferences -> Accounts中登录到你的代码库,XCode会要求你“登录”,它说“请提供证书,以便于XCode Server可以从这个代码库中检出文件。”点击“登录”,告诉XCode,是要创建新的SSH键还使用既存的。因为在 ~/.ssh/里面已经存在SSH键,所以我告诉XCode “使用既存的SSH键”。
你的Bot会获取选定分支上的变更,生成代码的最新版本。这意味着如果你想在多分支上测试代码,比如说 master 和 release两个分支,你需要为它们创建两个独立的Bot
选择master,然后点击Next。等一下你会看到所有Bot的配置选项。我们来看一下这些都意味着什么(这段时间比较适合去喝一杯咖啡或者去趟洗手间……伦敦现在的天气不错,不是吗?……板球……好了,回到Bots!)
6. Bot配置
Schedule告诉Bot什么时候运行:
- Periodical 意味着Bot每小时,每天还是每周运行一次
- On Commit使得Bot每5分钟从代码库获取一次最新代码,并且无论何时,发现新的提交任务,都会启动新的集成。在 master 分支上的On Commit Bot可以帮助你快速的发现什么时候测试开始失败,而不需要每个人都记着去手工执行测试
- Manual 只有当点击XCode中的“集成”时才会运行
Actions 告诉Bot要做那些工作:
- Perform analyze action运行静态分析
- Perform test action运行应用程序测试
- Perform archive action存档你的应用程序,以备在TestFlight或者应用程序商店发布时使用。
- 允许查看测试覆盖了哪些代码,这个选项会迫使XCode Server收集覆盖率数据而无需在scheme中将偏好设置为on。如果在本地运行测试,你不想收集覆盖率数据,但又需要利用在CI 服务器运行时的覆盖率,这个特性就显得非常有用。
- 标记和导出,应用程序从生成档案中通过Wi-Fi直接安装到iOS设备上,以后我会专门写一篇文章介绍你应该如何实现这一操作。
Configuration 允许重写Bot的生成配置(Debug,Release……)。我总是选择默认的“Use Scheme Setting”。
Cleaning 通过定期地清除它的所有资源并从scratch上检出代码库,确保Bot不会依赖于 DerivedData 的状态,或者它的源文件夹。你曾经遇到过损坏的 Pods 文件夹吗?这是一种在新的集成(从scratch上检出所有的东西)开始之前移除所有的产品、中间文件和源文件夹的方式。选项有:
- Always – 每次集成前移除所有的产品和中间产物
- Once a day – 每天只有第一次集成从scratch开始
- Once a week – 每周只有第一次集成从scratch开始
- Never – 不能自动移除产品
选项很多,是吗?但是,无需担心,一般使用默认值就可以了。如果不做任何更改,应该是不会有问题的。
现在请确保“Perform test action”被选中,点击下一步。
在这里,XCode 7 Beta 4 似乎有一个bug,XCode崩溃了。并不是对所有用户都出现,但是如果你的XCode此时崩溃了,请安装 XCode7 Beta 5 或者以上版本来代替之前的XCode。
你将会看到一个标题为“Choose the devices that this bot will test with”的页面,这正是我们现在要选择的。在顶端的下拉框中有一个值是“iOS”,并且是不可用的。这是因为在一开始选择的这个scheme告诉XCode Server 我们在一个iOS 目标上生成。
Test With 给了你四个选项:
- All iOS Devices and Simulators – 在所有已连接的iOS设备和模拟器上进行测试。这会花费一定的时间,因为每个版本的iOS都有10多个模拟器。如果你安装了两个XCode,像我现在这样,就要测试iOS8.4和 iOS 9.0,一共有20多个设备。然而,如果是只花费几秒钟的单元测试,这个时间是可以的。
- All iOS Devices – 所有已连接的iOS设备,不包含模拟器。
- All iOS Simulators –所有的iOS模拟器,不包含已连接的iOS设备。
- Specific iOS Devices – 指定的模拟器和已连接的iOS设备。
我们选择最后一个选项,指定的iOS设备,选择3个设备进行测试。如果你已经连接了一个开发设备,它会直接显示在列表中,你可以将它包含到你的测试进程(超简单)。
一直点下一步,直到看到一个叫做“Configure Bot triggers”的页面。
触发器是一种在集成之前或者之后运行的行为。XCode Server支持两种触发器类型:脚本和发送邮件通知。
使用脚本,你基本上可以实现实现所有功能:运行 pod install,或者 fastlane ,甚至是当生成结束以后通知其他成员。
Weirdness Alert – 有个地方特别容易出错。当XCode Server检出代码库的时候,没有把路径变更到附录文件夹(就像你运行 git clone ...到本地的时候,你需要将路径改变到你的工程目录)。因此在你的脚本中,需要做的第一件事情是 cd PROJECT_NAME (在我们的案例中是 cd XCSTutorialProject1)然后再运行 pod install 或者 fastlane。
第二个触发器类型是发送邮件通知,它并不是你期望的那样。当集成结束的时候它会给你发送一封邮件。然而它比这更聪明。它可以发送邮件给所有的提交者,因为它知道谁在上一次集成后提交过代码。这样,只有变更代码的人会被通知。如果想让某些地址总是可以收到这些邮件,你也可以追加。
你也可以指定当集成失败的时候只通知你,你也可以控制这些邮件的内容。非常棒!
创建一种类型的邮件通知,追加上你的邮件地址。但是,不要勾选Bot中发送给所有的提交者复选框。否则,我会收到你完成集成的邮件(因为我是所有这些内容的提交者。)这是XCode Server一个非常有趣的地方——它的邮件系统不是为开源项目设计的。
你点击“Create”之后,应该可以看到你创建第一个Bot的请求成功了。
7、可通过https://127.0.0.1/xcode查看修改
8、xcode-source control-commint 提交修改