ruby自动构建工程

前言

从入职就一直想实现全自动操作,缘由是我们SDK构成复杂,包括依赖的c++库,接入需要配置很多项,最开始要求是导入依赖的库实现脚本配置,(最开始没有用CocoaPods,需要手动添加依赖),简单做了了解之后,没有发现好的方式。就一直搁浅了,最近重构支持pod方式,解决了依赖库的添加问题,但还是手动添加我们自己库的配置。在做了一番调研后,发现Xcodeproj这个gem可以完美解决我们的问题,遂引入工程。在做完自动配置后,就想把所有的步骤都脚本化,这才有了这篇记录。

1、添加依赖的gem

sudo gem install fir-cli  
sudo gem install xcodeproj
sudo gem install plist
sudo gem install mysql2 -- --with-cflags=\"-I/usr/local/opt/openssl/include\" --with-ldflags=\"-L/usr/local/opt/openssl/lib\"

2、clone Vigame模块

模块包含sdk、自动化脚本、plist文件等。

注:需cd到工程目录,记录ruby执行shell命令

cmd = "git clone https://github.com/hohua88/Vigame.git"
system (cmd)

cd /Users/xxxx/xxx
git clone https://github.com/hohua88/Vigame.git

3、修改工程配置

使用Xcodeproj实现的,参考Xcodeproj工程配置脚本化

根据服务器数据修改plist及生成Podfile

修改plist
生成Podfile根据数据库的配置信息,生成对应的命令,我的根据服务器返回写了一个hash,具体如下

as_hash = {"headlineId" => "pod 'KTMSDK/Analysis/ByteDance',sdkVersion\n", "ReYunAppKey" => "pod 'KTMSDK/Analysis/TrackingIO',sdkVersion\n", "umengId" => "pod 'KTMSDK/Analysis/Umeng',sdkVersion\n"}
#生成Podfile
def create_podfile (var)
    var.concat(["end"])
    puts var
    aFile=File.new('Podfile','w')
    var.each do |i|
        aFile.write(i)
    end
    aFile.close
end

生成Podfile之后可以直接执行

pod install

4、 检测使用SDK版本

require 'Plist'
require 'net/https'
require 'uri'
require 'json'

#获取本地配置
path = File.join(File.dirname(__FILE__), "VigameLibrary.plist")
result = Plist.parse_xml(path)
version = result["KTMSDK_Version"]
puts version
#读取服务器配置
url = "http://gui.vigame.cn/plugin/files/Versions_iOS.json"
uri = URI.parse(url)
res = Net::HTTP.get_response(uri)

resbody = JSON.parse(res.body)

sever_version = resbody["KTMSDK_Version"]["version"]

if sever_version == version
    print ( "已是最新版本 #{version}\n")

else
    raise "请升级到最新版本 #{sever_version}"
    cmd = "exit 1"
    system (cmd)
end

5、添加p12及mobileprovision

#添加证书和描述文件
security import "./Vigame/证书-密码123456/dis.p12" -k ~/Library/Keychains/login.keychain-db -P "123456" -A
security import "./Vigame/证书-密码123456/dev.p12" -k ~/Library/Keychains/login.keychain-db -P "123456" -A
open ./Vigame/证书-密码123456/gzsj2_20191102_adhoc.mobileprovision
open ./Vigame/证书-密码123456/gzsj2_20191102_dev.mobileprovision

6、打包脚本

如果需要上传服务器/提审可以扩展实现

xcodebuild clean -workspace Unity-iPhone.xcworkspace -scheme Unity-iPhone -configuration enterprise
xcodebuild archive -workspace Unity-iPhone.xcworkspace -scheme Unity-iPhone -archivePath Unity-iPhone.xcarchive
xcodebuild -exportArchive -archivePath "Unity-iPhone.xcarchive" -exportPath ipa -exportOptionsPlist "Vigame/ExportOptions.plist"

7、上传fir.im

登录fir.im,在个人账号下API Token中获取自己的api_token

echo "遍历文件,找到xxxx.ipa"
for file in $(ls *)
do
    strB=".ipa"
    if [[ $file == *$strB* ]] ; then
        fir publish ./ipa/${file} -T “your-apitoken” -Q
    fi
done

8、打开打包文件夹

里面有下载二维码图片,可以直接把图片给到测试进行下载测试,如果要打上传appstore的包,可以自己手动打包。

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

推荐阅读更多精彩内容

  • 1.0 iOS模块化中的问题 前文已经介绍了模块化的流程及一些常见的问题,我们在这里再次总结一下。 在工作中,当我...
    hard_man阅读 1,289评论 1 8
  • 久违的晴天,家长会。 家长大会开好到教室时,离放学已经没多少时间了。班主任说已经安排了三个家长分享经验。 放学铃声...
    飘雪儿5阅读 7,515评论 16 22
  • 创业是很多人的梦想,多少人为了理想和不甘选择了创业来实现自我价值,我就是其中一个。 创业后,我由女人变成了超人,什...
    亦宝宝阅读 1,804评论 4 1
  • 今天感恩节哎,感谢一直在我身边的亲朋好友。感恩相遇!感恩不离不弃。 中午开了第一次的党会,身份的转变要...
    迷月闪星情阅读 10,561评论 0 11
  • 可爱进取,孤独成精。努力飞翔,天堂翱翔。战争美好,孤独进取。胆大飞翔,成就辉煌。努力进取,遥望,和谐家园。可爱游走...
    赵原野阅读 2,724评论 1 1