OS X Server搭建Bots持续集成环境

作者: KevinTing | 来源:发表于2015-09-08 22:02 被阅读3381次

    说到持续集成环境,当然少不了大名鼎鼎的Jenkins,当然在苹果的Mac平台上,也可以搭建Jenkins持续集成环境,这里我不多说,网上书上都有教程。苹果自家也搞了一个持续集成的工具:OS X Server,当然OS X Server的功能远不止持续集成,还可以缓存分发下载,邮件服务器等等,OS X Server界面相当简单,操作也基本上都是傻瓜式的。前些时刚来公司,老大让我自己学学搭建集成测试环境,所以才去网上自己摸索。虽然最终老大的老大并不愿意掏银子买一个好点的Mac当服务器(呵呵。。。),以至于最终公司并没有建成iOS开发的持续集成环境。但是这里还是把我这一段时间的摸索记录下来,好歹干了活的。

    实际上网上关于OS X Server的文章并不多,最权威的是苹果的官方文档了:Xcode Server and Continuous Integration Guide: Install OS X Server and Configure Xcode Server,但是这个文档还是有点简略,实际用的时候还是有些坑的。

    基于OS X Server的集成测试架构如下所示,基本流程是在服务器建立代码仓库进行版本控制,一般Source Code Server和OSX Server为同一个Server,Developement Mac从Server上面Pull/Push Source Code,Server进行Intergrate,同时集中管理多个Developement Mac,并将Report发送到Developement Mac。

    b、直接在mac上面进入app store下载;


    1、OS X Server版本:

    目前有OS X Server 4.1(要求服务器系统版本OS X 10.10.3以上),和老版本的OS X Server 3.2.2。

    2、安装方法(安装最新的OS X Server4.1):

    a、进入developer.apple.com,通过apple的开发者账号进入下载,免掉下载码输入等阶段,直接下载dmg安装文件进行安装,网址:https://developer.apple.com/devcenter/ios/index.action((推荐这种方法);

    b、直接在mac上面进入app store下载;


    3、登陆Server方式:

    启动Server App,会出现2种登陆Server的方式:

    a、本机Mac作为Server:即安装OS X Server的mac主机同时作为服务器,输入管理员账号密码之后即可配置本机mac作为Server;

    b、其他Mac作为Server:登陆其他mac服务器,前提是要登陆的mac已经安装OS X Server并且开启服务,允许访问,而且需要登陆mac的管理员账号和密码。此时本机mac上面的OS X Server相当于一个远程管理客户端;

    4OS X Server服务器配置

    提供的服务选项统一在侧列表显示,需要开启相应的服务,点击服务列表,选择开启开关即可。

    4.1、服务器基本配置:

    a、选择左侧“服务器”项目下面的第一个选项,例如我的mac电脑作为服务器时,名称为”kevin的iMac”;

    b、在“概览”下面可以设置主机名称,电脑名称等;

    c、在“设置”下面可以设置服务器的基本访问选项,勾选“允许使用SSH远程登录”,表示允许3中b登录方式,即允许其他电脑通过ssh登陆此服务器;

    d、“访问”选项下面可以设置访问选项,一般默认即可;

    4.2、用户和群组:

    a、选择”账户“下面的”用户“选项,服务器mac主机上面已经存在的用户会出现在用户列表,可以添加用户,这里可以为项目组的每个成员创建一个账户和密码;

    b、选择”账户“下面的”群组“选项,可以创建群组,服务器mac主机的管理员账号默认属于Adminstrators群组,可以创建common users群组,将其他用户放入,一般可以设置一个管理员用户,其他作为普通用户;

    c、用户权限,用户群组设置

    4.3Xcode服务:

    a、选择”服务“下面的”Xcode”选项;

    b、选择Xcode,服务器必须安装Xcode作为集成测试的编译环境;

    c、点击开启服务按钮,直到出现绿色小点标志表示已经开启;

    d、点击”编辑“权限,设置Bot权限,一般可以设置成”Adminstrators可以创建Bot,已登录的用户可以查看Bot”,表示管理员可以创建Bot,其他用户使用Bot集成测试即可;

    e、”储存库”:即repository代码仓库,可以在服务器上直接添加创建repository,但是不建议这种方式,配置麻烦,后面介绍直接在客户机Xcode上面建立remote repository的方式。编辑权限设置为:可以通过HTTPS和SSH进行访问,Adminstrators可以创建储存库;

    4.4DNS服务:

    最好开启DNS服务,使用默认设置即可,方便局域网其他Mac找到Server。在”高级“项目下面的”DNS“,点击开启即可。

    5、开发macXcode设置和操作

    这里做了局域网mac开发机连接Server的demo,Internet上面需要配置域名等。

    5.1、开发mac机登陆Server

    通过Xcode界面上的Xcode>preferences>accounts进行添加Server以连接到服务器,直接选取Server,然后输入用户名和密码;

    5.2Adminstrators将工程加入Serverremote repository

    Adminstrators配置为可以创建Bot和repository,其他用户只能使用不能创建。以下三种方式为管理员创建在Xcode上创建Server上的remote repository的不同情况:

    a、创建新工程:勾选”Create Git repository on",选择服务器为刚才登陆的Server,创建完工程之后,一般会在Server上自动创建一个remote repository(通过Source Control >ProjectName– BranchName>ConfigureProjectName查看),同时会将repository自动添加到Xcode>preferences>accounts中,如果没有的话,通过Source Control >ProjectName–BranchName>ConfigureProjectName,选择Remotes,点击左下角”+”,“Create New Remote”手动在Server上创建repository;

    b、本地git管理工程加入Server集成管理:如果创建工程的时候,选择的是”Create Git repository on"到“My Mac”,此时通过Source Control >ProjectName–BranchName>ConfigureProjectName,选择Remotes,点击左下角”+”,“Create New Remote”手动在Server上创建repository;

    c、没有git管理的工程加入Server集成管理:必须将工程加入git的source control,才能创建bot,如若开始没有勾选”Create Git repository on",那么可以根据下面命令在“终端”中创建git(git在本地)

    cd 目录

    git init

    git add .

    git commit -m 'Initial commit'

    然后同样如b中所示“Create New Remote”

    5.3、Adminstrators创建Bot:


    通过Product>Create Bot进行创建。在创建bot的时候需要进行设置,后续Adminstrators也可以修改这些设置。

    a、需要勾选Shared scheme;

    b、或者直接在Manage Schemes勾选Share;

    c、点击change,输入账号密码进行验证;

    d、选择集成方式:三种方式,Periodically,On Commit,Manual;

    e、勾选执行的集成动作,还有是否进行clean;

    f、选择test设备;

    g、填写集成前后的triggers,包括执行脚本,发送邮件等等;

    5.4commitcheck out

    所有用户都可以commit和check out工程。一般模式是Adminstrators根据5.2和5.3配置好remote repository和Bot,并且将project Commit和Push到Server上面,其他用户先Check Out到本地,然后修改project,commit和push之后Server执行integrate,然后在开发mac机上查看bot。

    a、Commit:Source Control > Commit进行提交,必须勾选Push to remote,或者commit之后在外面单独push到Server,才能在服务器上面integrate;要注意git的commit只是提交到本地,并没有推送到服务器,所以一定要push一次。

    b、Check Out:Source Control > Check Out,选取相应的Repository,然后Check Out到本地;

    6、查看日志和测试结果

    a、在Xcode的信息导航栏可以看到bots和相应的日志测试结果

    b、也可以在浏览器上直接查看https://地址//xcode

    7、遇到问题和解决办法:

    a、普通用户在push时存在权限问题:insufficient permission for adding an object torepository database objects,提示用户没有写repository的权限,修复权限方法如下:Server上终端中用命令行输入以下命令:

    sudo chown -R userName:userGroup repositoryPath,

    例如:sudo chown -R james:commonusers/Library/Developer/XcodeServer/HostedRepositories/demo1,修复普通用户写入repository的权限;

    b、遇到某些文件(比如png,jason等文件)不能commit到git的问题解决办法:

    进入git隐藏文件夹,编辑config,将ignorecase = true修改为ignorecase = false保存修改即可。

    小结:1、Bots集成测试环境最显而易见的好处是,你可以在开发之前写好单元测试用例。然后后续分工合作开发的时候,下班之前提交代码,然后OS X Server自动运行一遍测试用例。第二天上班所有人都可以查看测试结果。。。2、如果把自己的Mac开发机当做OS X Server的宿主服务器来用,你会发现这绝对是一个坑,我的Mac 8G内存刷刷用掉5,6G,再开一个Xcode开发那是卡的相当的酸爽,要是真的想搞一个Bots集成环境,还是买个机子做服务器吧,别像我们老板那么抠门。。。

    相关文章

      网友评论

      • sankun:公司SVN 没有用Git 用cornerstone 可以麽

      本文标题:OS X Server搭建Bots持续集成环境

      本文链接:https://www.haomeiwen.com/subject/zwfpcttx.html