简书的图森破包子铺(App打包系统)

起这么一个标题应该不会被那啥吧。+1s

背景

这次我们来说说App打包,简书上有大量教程教你怎么搭建持续集成、怎么搭建Jenkins、怎么打App包、怎么上传fir.im等等。这些教程大部分达到的效果就是:登录Jenkins -> 找到对应job -> 构建 -> 自动上传FIR/蒲公英 -> Jobs History显示二维码,对于懒的人来说,这太麻烦了,我想要一步就开始构建,构建完成后直接给我反馈结果;另一个问题,大部分公司都是用一些老的MacBook或Mac Mini来搭建Jenkins,这台机器通常在内网中,外网是访问不到,除非有梯子,你要是外出或者回家了想打个包怎么办,我想要最简单的条件就可以打包。简书现在做到了在IM中发一条消息,打包就开始了,打包完成后我会收到一条消息,消息显示下载地址的二维码,真正的too simple,这也是名字的由来。领导看后说了一句:“你们搞的这个系统啊,excited!”。话不多说,赶紧上车。


效果

结构

首先我们来看一下整体的结构。


结构
IM

这一步要完成的是指定要打包的App,以及一些配置,代码分支、Release/Debug、ChangeLog等。
简书内部使用的IM是零信(原瀑布IM),它提供了两个很有用的扩展:Outgoing和Incoming。Outgoing是一个触发机器人,当消息命中了关键字,它会把这条消息POST到一个指定URL,也就是下一步要说的API Server。举个栗子:

zhao0:打包(iOS)

命中了关键字打包,Outgoing就把用户名、消息内容POST到Server。
Incoming则相反,我们可以向生成的URL POST一条消息,可以是文字或图片或链接,这条消息就出现在了IM中,在这里用来反馈结果,Incoming在其他监控方面用得挺多。我知道的其他IM有Slack也是支持这两个扩展的。这一步弄一个Web页面或者邮件也是可以的,思路是一样的。

API Server

API Server的任务非常简单,它维护一个队列,IM POST过来的消息入队;Client主动查询,Server收到GET请求就出队,队列可以是全局变量(重启就丢失了)、消息队列MQ、数据库。

Jenkins

Jenkins需要进行三步配置
1、参数化构建过程
参数化可以不改变构建脚本实现不同配置,类似于函数的参数,这里可以根据需要添加自己的参数,在脚本中通过${参数名}取到值。

参数化

2、远程触发构建
远程触发

简单地说这是支持通过一个URL触发构建,还可以传入参数。Token这里需要填入一个随便生成的字符串。
3、分配用户
新增一个用户专门用来触发构建,查看用户的API Token
API Token

这里顺便推荐使用Role-based Authorization Strategy插件来管理用户的权限。
三步好了之后,就可以通过这样一个URL触发构建,很容易在脚本中使用,注意替换所以大写的字段

http://USERNAME:APITOKEN@JENKINSADDRESS/JOBPATH/buildWithParameters?token=TOKEN&OTHERPARARMS
Query Client

Client负责定时从API Server拉任务,解析参数,触发Jenkins构建,由一段简单的Python/Ruby脚本就可以完成。从Server获得的消息保留了原来的格式,需要进行简单的匹配,组装成一个完整的URL,然后'curl -G url'就触发了。搭配crontab每隔几分钟执行一次。

到这里,整个系统就搭好啦,是不是很简单。

什么鬼

每个人的环境和需求有差别,这里给你指明了路子,有任何疑问可以在评论中留言。

关于fastlane

简书的iOS持续集成全部都用fastlane完成,fastlane本质上和写一堆shell script没区别,但是fastlane提供了大量现成的action,想要实现的功能几乎都有(实在没有也可以自己定制),把枯燥的shell代码变成简单的ruby函数(action)调用,Jenkins里只需要一行代码。

下回预告

fir.im开始按量收费了?Debug包不敢传到外部平台?安卓的apk可以直接下载,iOS的ipa怎么弄?下次将教你怎么自己搭建一个这样的平台,代码会开源,一键部署,等不及的就node install -g ipapk-server

写在最后

简书作为一个优质原创内容社区,拥有大量优质原创内容,提供了极佳的阅读和书写体验,吸引了大量文字爱好者和程序员。简书技术团队在这里分享技术心得体会,是希望抛砖引玉,吸引更多的程序员大神来简书记录、分享、交流自己的心得体会。这个专题以后会不定期更新简书技术团队的文章,包括Android、iOS、前端、后端等等,欢迎大家关注。

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

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,633评论 18 139
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,793评论 25 707
  • 软件的持续集成工具之一,易上手,功能强大,话不多说,干货奉上。我的博客地址:http://blog.lzoro.c...
    格子Lin阅读 12,207评论 10 41
  • 点击查看原文 Web SDK 开发手册 SDK 概述 网易云信 SDK 为 Web 应用提供一个完善的 IM 系统...
    layjoy阅读 13,702评论 0 15
  • 请给我一首诗的时间 清风带来远方的思念 微雨舞落 低唱安然 请给我一首诗的时间 青春走过生死的誓言 你若安好 便是...
    君若狸阅读 282评论 0 0