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 地址

参考资料

  • 官网地址:>https://docs.fastlane.tools/getting-started/ios/setup/

你可能感兴趣的:(fastlane iOS自动打包)