iOS 持续集成——Xcode server&Bots自动打包

前言:一直想学习一下iOS的持续集成,最近开发企业内部app,打包测试发布更加频繁。所以有时间就研究了一下关于自动打包。

说起自动打包,首先想到的肯定是Jenkins,Jenkins可提供各种插件使用,支持不同平台,并且还是免费的。Jenkins + fastlane可实现构建、上传、测试、证书管理等一系列自动化。但是我在搭建好环境,安装好插件,配置好仓库ssl和开发证书,尝试了n次后,就是没有成功。。无奈对脚本语言的不熟悉。但是最近看到了关于Xcode server的东西,Xcode是支持持续集成的,之前的macOS Server是需要在Apple开发网站中下载的,并且还需要开发者账号的兑换码。在Xcode9更新后,macOS Server中的Xcode部分就直接集成到了Xcode中。但是有开发账号还是可以兑换一个macOS Server作为网站服务器😏。

言归正传,这是一篇技术文!首先看下使用Server&Bots在持续集成时可以做什么。

  • 指定远程仓库,获取具体分支最新代码,可合并操作。
  • 进行自动Archive,对代码进行静态分析,对代码进行单元测试,配置debug release。
  • 设置打包签名 证书。
  • 开始持续集成触发条件。(定时、在有新代码提交时、手动)
  • 持续集成前执行的脚本(pre-integration script)、持续集成后执行的脚本(post-integration script)。

流程开始:

1、Xcode->Preferences->server&bots,选择当前Mac登录账户,打开。
server&bots.png
2、创建bot

server的开关打开,代表server已经启动。然后开始创建bot。
首先解释一下bot:bot是一个构建工作的描述。一个bot对应一个独立工作空间,相对于jenkins,,bot可以类比jenkins的一个项目。持续集成的配置都在bot中设置。

开始创建bot
  • 第一步打开需要持续集成的项目(前提需要这个项目需要已经上传到远程仓库)。

  • 选择并配置服务。 Product->create Bots。server 下拉选择add new server,在列表中选择本机已启动的服务器,输入用当前mac登录的户名和密码。content as选择registered user。Xcode Server的账户配置可在Xcode-> Preferences->accounts中修改。


    create new bot.png
  • next 工程资源控制。next 选择工程需要持续集成的分支,我的测试工程中就只有一个分支,所以没有选择。就只有master了。


    source control.png
  • next 编译打包配置。archive expert选择使用plist文件自定义选项,plist文件在手动执行archive后,在导出的ipa文件夹中有ExportOptions.plist。选择plist文件,plist文件在企业证书打包时很重要,需要配置ipa下载路径、图片下载路径等。Configuration选择release,后面需要上传蒲公英。

bulid configuration.png
  • next 构建触发器配置。Integrate 选项中有periodically(周期性触发)、On commit(提交时触发)、Manually(手动触发),根据需要选择触发条件,这里选择手动触发。
bot Integrate.png
  • next 证书签名配置。首先顶部options中有提供自动管理证书的选项,顶部也可切换手动添加证书到server。这里我选择的是手动添加打包需要的证书。


    手动打码不容易.png
  • next 设置环境变量。这一步可设置预集成和后整合触发器所需的环境变量,执行的Run Script构建阶段所需的任何环境变量。环境变量设置可参考Xcode服务器环境变量参考。但是这里并没有用到。直接下一步🤷‍♀️。

    Configure environment.png

  • 配置bot触发器。可设置集成前后的脚本、邮件发送服务。这里点击左下角 + 添加一个post-integration script。右边可勾选触发器触发的动作。根据需要选择触发动作,这里只选择当构建成功才执行脚本(只勾选success)。

post-integration script.png

又到写脚本的时候了。这里只需要配置将打好的ipa,调用蒲公英提供api上传即可。首先打开蒲公英提供的蒲公英api文档

蒲公英api.png

获取到ukey和_api_key后,编写脚本,掉接口上传。脚本如下:

#!/bin/sh
curl -F "file=@$XCS_PRODUCT" \
-F "uKey=you uKey" \
-F "_api_key=you _api_key" \
https://qiniu-storage.pgyer.com/apiv1/app/upload

然后在确保代码commit之后,command+9 选择创建的bot,点击Integration开始,没错误就代表成功了。


success.png

蒲公英管理后台也能看到上传的应用,简单的持续集成就算完成了。有问题欢迎提问。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容