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.把工程从gitclone下来

通过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查看修改 

8xcodesource controlcommint 提交修改

posted @ 2016-01-07 13:47  燕羽天空  Views(877)  Comments(0Edit  收藏  举报