美文网首页iOS
Fastlane对iOS的持续集成(自动打包)

Fastlane对iOS的持续集成(自动打包)

作者: Y_Eric | 来源:发表于2018-07-31 19:04 被阅读380次

    传统的打包方式:Archive——>勾选一堆选项及下一步,打包用途、app瘦身、证书——>导出ipa包——>打开蒲公英——>上传ipa包——>填写项目描述、安装密码——>发布测试包

    如果发布测试版本次数过多,比如临近上线修复BUG多次提交测试时,显然这种操作力不从心,如果掌握一键打包上传那就轻松太多,以下以Fastlane打包上传蒲公英为例讲一下Fastlane的用法。

    概要

    Fastlane是一套ruby编写的持续集成工具集。通过Fastlane可以实现自动打包、发布、截取app图片等工作,同时Fastlane可以通过执行ruby代码或者特定编写的脚本来实现这些工作,进而达到自动化构建版本并上传所指渠道。

    Fastlane集成

    1、ruby安装

    大家都知道Fastlane是用ruby编写的,要想正确使用Fastlane必须先安装ruby。

    首先检查一下ruby版本,装没装一查便知。

    查看ruby版本

    ruby同步安装最新版本,不知道安装方法的小伙伴请自行百度,这里就不详细介绍了。

    2、Fastlane安装

    首先安装Xcode工具,我们这里虽然需要Fastlane自动打包,但其本质还是需要Xcode帮忙完成编译、打包,显然Xcode自带工具必不可少:

    xcode-select--install

    然后安装Fastlane:

    sudo gem install fastlane--verbose

    如果报错:

    ERROR:  While executing gem ... (TypeError)

    no implicit conversionofnil intoString

    则更新gem版本,然后再次安装Fastlane:

    sudo gem update--system

    如果报错:

    ERROR:Whileexecuting gem ... (Gem::FilePermissionError)

    You don't have write permissions for the /usr/bin directory.

    则尝试使用如下命令进行安装:

    sudo gem install-n /usr/local/binfastlane

    如出现其他报错,百度工程师会告诉你答案或者直接官网寻求帮助!

    检查Fastlane是否安装成功:

    fastlane--version

    3、Fastlane初始化配置

    a、cd +空格+项目路径(xxx.xcodeproj同目录即可):

    项目路径

    b、fastlane初始:

    fastlane init

    c、fastlane初始化结束后,会提示选择Fastlane的用途,这里我们选择自定义,即输入“4”:

    Fastlane自定义

    d、安装蒲公英插件,安装后有个y/n的选择,选择y:

    fastlane add_plugin pgyer

    4、Fastlane自定义

    路径:/Users/apple/Desktop/FastlaneTest/fastlane,用sublime打开编辑:

    附上sublime下载地址:sublime

    原始fastfile

    现做如下改动,注释很清晰,大家可以直接复制使用替换掉原始fastfile内容(这里发布adHoc包):

    附上ruby教程:ruby

    (注意:填入蒲公英平台拿到的api_key和user_key及所要打包项目的scheme)

    default_platform(:ios)

    # 指定持续集成对象的平台名称

    platform :ios do

    # 给lane命名:adHoc

    lane :adHoc do|options|

    branch = options[:branch]

    # target区分提测环境

    # puts是ruby中的输出,gets为获取终端中输入的文字。

    puts "请选择要打的scheme:(1:FastlaneTest,else: 项目Target)"     

    scheme = STDIN.gets

    # 通过判断输入内容,来区分一些打包信息,1后面加\n是因为在终端输入1再敲回车的时候scheme就包含了回车的内容,所以scheme == "1\n"

    if scheme == "1\n"

    # 项目中target的名称

      schemeName = "FastlaneTest"

    # 打包的用途(app-store, package, ad-hoc, enterprise, development).

      export_method = "ad-hoc"     

    else

      schemeName = "项目Target"

      export_method = "enterprise"     

    end

    #从蒲公英平台拿到的api_key和user_key.

    api_key = "xxxxx"

    user_key = "xxxxx"

    #输入蒲公英上传ipa包后输入的版本描述信息

    puts "请输入版本描述信息:"

    desc = STDIN.gets

    puts "开始打包 #{schemeName}"

    # 开始打包

    gym(

    #指定scheme的名字

    scheme: "#{schemeName}",

    #输出的ipa名称

    output_name:"#{schemeName}",

    # 是否清空以前的编译信息 true:是

    clean:true,

    # 指定打包方式,Release 或者 Debug

    configuration:"Release",

    # 指定打包所使用的输出方式(app-store, package, ad-hoc, enterprise, development).

    export_method:"#{export_method}",

    # 访问钥匙串

    export_xcargs: "-allowProvisioningUpdates",

    # 指定输出文件路径

    output_directory:"./fastlane/build",

    # 配置证书

    #export_options: {

    #provisioningProfiles:{

          #"com.xxxx.xxxx" => "xxxxxxxx",

          #}

      #}

    )

    puts "开始上传到蒲公英"

    # 上传屏蔽

    #deliver(force: true,

      # 不上传屏幕截图

          #skip_screenshots:true,

          # 不上传元数据

          #skip_metadata:true,

          #)

    #开始上传ipa到蒲公英,这里用的是蒲公英提供的插件

    #update_description代表更新信息,password代表安装密码

    pgyer(update_description: "#{desc}", api_key: "#{api_key}", user_key: "#{user_key}", password: "123456", install_type: "2")

    #在上传完ipa后,打开ipa的存放文件夹,起到提示上传完成的作用

    system "open ../fastlane/build"

    end

    5、Fastlane打包上传蒲公英

    自检项目证书:

    自动匹配证书

    同目录终端运行如下命令便可自动发包到对应蒲公英账号:

    注意脚本文件执行格式:fastlane+脚本第一行中的platform名+脚本第二行中的lane名

    fastlane ios adHoc

    终端输入操作:

    执行脚本 打包scheme输入”1“,版本描述”打包“

    上传蒲公英成功:

    打包上传成功

    以上简单介绍一些基本用法,不足之处望指正!

    Demo:https://github.com/yssEric/Fastlane.git

    相关文章

      网友评论

        本文标题:Fastlane对iOS的持续集成(自动打包)

        本文链接:https://www.haomeiwen.com/subject/ibhopftx.html