fastlane iOS自动打包

fastlane 打包用于无人值守提交应用包到TestFlight ,蒲公英,fir.im等第三方平台,感觉觉得速度方面可能会慢一点,但是优势在于

  • 无人值守
  • 自动拉取最新代码
  • 自动clean,保证代码没有缓存干扰
  • 自动打tag标签

安装

个人建议,专门用一台电脑来打包,mac 是支持远程控制的,或者是用一个配置比较好的电脑,让他给你建一个用户,你就可以使用他的电脑了,而且不会耽搁彼此的工作(共享屏幕的方法

安装准备

  • xcode 插件安装或更新:xcode-select --install
  • 更新ruby 最好是最新版本吧

正式安装

  1. sudo gem install fastlane -NV (如果报错了就执行:sudo gem install fastlane -n /usr/local/bin )
  2. fastlane init(如果是swift:fastlane init swift)
  3. 然后就wait.....

使用

以下是在下配置文件,支持发布发布不同的环境到不同的平台

# 该文件用来命令行打包,自动pull add_tag ,commit,auto_uplaod 到(testflight,fir.im,pgy)
# 1. cd 到对应的工程目前下
# 2.执行对应的命令
# a.发布到蒲公英: (开发环境)         fastlane pgy
# b.发布到fir.im:(测试环境)        fastlane fir env:dev/test/prelive/release
# c.发布到testFlight:(预生产环境)   fastlane tf
# d.发布到testFlight:(正式环境)     fastlane store
# f. 同时发布到testflight 和fir.im    fastlane tf_fir
# e.同时发布到所有环境                fastlane all
#
#
#
#
#
#
#


default_platform(:iOS)
platform :iOS do
  
  lane :release_ready do
    UI.message("----------release_ready----------")
    ensure_git_status_clean ## 确保当前的代码都已经提交完成
    git_pull
    increment_build_number # 自增build
    commit_version_bump # 检查build
    push_to_git_remote
  end


  lane :release_finsh do
    UI.message("----------release_finsh----------")
    
    push_git_tags
  end


  lane :pgy do
    UI.message("----------发布一个蒲公英 开发版本----------")
    release_ready

    sync_code_signing(type: "adhoc")
    build_app(
      workspace: "WeTalk.xcworkspace",
      scheme: "WeTalk",
      export_method: "ad-hoc",
      configuration: "Debug",# Debug, Test,Prelive, ,Release
      silent: true,
      clean: true,
    )
    pgyer(api_key: "you api key", user_key: "your user key")
    add_git_tag(tag:"dev/#{get_version_number}(#{get_build_number})")

    release_finsh
  end


  lane :fir do |options|
    UI.message("----------发布一个fir.im 测试版本----------")
    release_ready
    env = options[:env]
    config = "Test"
    message = "测试环境"
    
    if env == "dev"
      config = "Debug"
      message = "开发环境"

    elsif env == "test"
      config = "Test"
      message = "测试环境"

    elsif env == "prelive"
      config = "Prelive"
      message = "预生产环境"

    elsif env == "release"
      config = "Release"
      message = "正式环境"
    else
      config = "Test"
      message = "测试环境"
    end

    sync_code_signing(type: "adhoc")
    build_app(
      workspace: "WeTalk.xcworkspace",
      scheme: "WeTalk",
      export_method: "ad-hoc",
      configuration: config,
      silent: true,
      clean: true,
    )
    firim(firim_api_token: "your token",app_changelog:message)
    add_git_tag(tag:"#{env}/#{get_version_number}(#{get_build_number})")

    release_finsh
  end
  

  lane :tf do
    UI.message("----------发布一个testfligth预生产版本----------")
    release_ready

    sync_code_signing(type: "appstore")
    build_app(
      workspace: "WeTalk.xcworkspace",
      scheme: "WeTalk",
      configuration: "Prelive",
      silent: true,
      clean: true,
      changelog:"预生产环境"
      )
    upload_to_testflight
    add_git_tag(tag:"prelive/#{get_version_number}(#{get_build_number})")

    release_finsh
  end
  
  lane :store do
    UI.message("----------发布一个appStore预生产版本----------")
    release_ready

    sync_code_signing(type: "appstore")
    build_app(
      workspace: "WeTalk.xcworkspace",
      scheme: "WeTalk",
      configuration: "Release",
      silent: true,
      clean: true,
      changelog:"正式环境"
      )
    upload_to_testflight
    add_git_tag(tag:"release/#{get_version_number}(#{get_build_number})")

    release_finsh
  end


  lane :tf_fir do
    UI.message("----------同时发布testFlight 和 fir.im 版本----------")
    fir # fir.im 测试环境
    tf # testflight 预生产环境
  end


  lane :all do
    UI.message("----------发布所有版本----------")
    pgy # 蒲公英,开发环境
    fir # fir.im 测试环境
    tf # testflight 预生产环境
    store # 正式环境
  end

拓展

不同环境的配置

我们在开发的时候会遇到很多环境,比如有开发环境,测试环境,预生产环境,生产环境,很明显,Xcode 默认的Debug 和release 是不够用的,幸运的是,我们可以对其进行扩展,如下:

  1. 添加你想要的配置,你可以duplicate 系统的debug or release ,如果你要发布应用,建议选择duplicate release,因为release 会多一些优化配置


    配置方式
  2. 设置他们对应的宏定义,系统默认只有一个DEBUG
    在这里插入图片描述
  3. 配置不同的环境
#ifdef DEBUG // 开发环境
   your code 
#elif TEST // 测试环境
   your code 
#elif PRELIVE // 预生产环境
   your code 
#elif RELEASE // 正式环境
   your code 
#else // 默认也是正式环境
   your code 
#endif
  1. 结果,你就在可以不用修改任何代码,在开发或者发布的时候随意切换了


    在这里插入图片描述

制作可执行的脚本

  1. 创建一个.sh后缀的脚本文件
  2. 使用命令:sudo chmod 777 yourfile.sh修改权限
  3. 编写你想要执行的脚本
  4. 修改双击打开方式:


    在这里插入图片描述
  5. 收工,双击试试

问题记录

附件

我之前配置的其他fastlane 脚本,都放在这里了,或许对你有一些帮助github 地址

参考资料

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

推荐阅读更多精彩内容