Fastlane 安装及使用

一、安装 Fastlane

如果尚未安装Fastlane,打开终端,在根目录下执行,进行安装
sudo gem install fastlane

二、初始化 Fastlane

  1. 先切换到项目目录中
    cd ....
  2. 执行如下命令,初始化Fastlane
    fastlane init
  3. 选择想要Fastlane执行的操作。
    选择manual setup,应该是4

三、其他准备工作

  • 去AppStore配置秘钥,以便连接AppStore时免登录

  1. 开发者中心的App Store Connect下选择“用户和访问” - “集成” - 秘钥。
    在这里获取所需要的Issuer ID秘钥ID,将秘钥文件xxx.p8下载下来保存好。
  2. xxx.p8文件放入与fastlane文件夹同级的文件夹中
  • 配置env文件

  1. 将终端切到fastlane文件夹
  2. 执行touch .env.default, 生成.env.default文件
  3. 执行open -a TextEdit .env.default打开.env.default文件
  4. 编辑.env.default文件,将以下内容粘贴至文件中,并用项目的真实参数替换“=”后的内容
SCHEME=工程名
BUNDLE_ID=BundleId
WECOM_WEBHOOK_KEY=机器人key
DEVELOPMENT_PROFILE_NAME=测试描述文件名
PGYER_APP_KEY=蒲公英Appkey
STAGING_PROFILE_NAME=发布描述文件名
APP_STORE_CONNECT_API_KEY_KEY_ID=在AppStore中配置的秘钥的秘钥Id
APP_STORE_CONNECT_API_ISSUER_ID=在AppStore中获取的IssuerId
APP_STORE_CONNECT_API_KEY_FILEPATH=./在AppStore中下载的文件名.p8
  • 配置忽略文件

在.gitgnore中忽略掉敏感信息及打包文件
添加如下代码

*.ipa
*.dSYM.zip
*.dSYM
*.lock
fastlane/*.xml
fastlane/report.xml
fastlane/Preview.html
fastlane/screenshots/**/*.png
fastlane/output
*.p8
.env.default

四、打包至蒲公英

1. 在项目目录中执行如下语句,将蒲公英插件添加到项目中,并自动更新 Pluginfile 和 Gemfile。

fastlane add_plugin pgyer

2. 配置 Fastfile

将如下代码copy到Fastfile中

default_platform(:ios)

platform :ios do

    # 工程名字
    scheme = ENV["SCHEME"]
    # BundleId
    bundle_id = ENV["BUNDLE_ID"]
    # 机器人配置
    wecom_webhook_key = ENV["WECOM_WEBHOOK_KEY"]
    # 项目版本号
    version = get_version_number(xcodeproj: "#{scheme}.xcodeproj")
    build = get_build_number(xcodeproj: "#{scheme}.xcodeproj")

    # 蒲公英更新日志
    changeLog = <<~CHANGELOG
- 修复已知问题
    CHANGELOG

  desc "打包、上传蒲公英并通知企业微信群"
  lane :debugToPgy do

    # 描述文件
    profile_name = ENV["DEVELOPMENT_PROFILE_NAME"]
    # 蒲公英配置
    pgyer_api_key = ENV["PGYER_APP_KEY"]
    # 蒲公英下载链接
    download_url = "将下载链接粘贴进来"    #正常是可以从回调内容中获取的,但是配置没成功,始终不好使,暂时写死

    # 清理构建
    clean_build_artifacts

    # 构建 IPA 包
    gym(
      scheme: scheme,
      export_method: "development",
      export_options: {
        provisioningProfiles: {
          bundle_id => profile_name
        }
      },
      output_directory: "./fastlane/output/ipa",   # 指定 .ipa 的输出文件夹
      output_name: "#{scheme}.ipa"   # 指定生成的 .ipa 文件名
    )

    # 上传到蒲公英
    pgyer_info = pgyer(
      api_key: pgyer_api_key, 
      ipa: "./fastlane/output/ipa/#{scheme}.ipa",
      update_description: changeLog,
    )

    # 发送到企业微信信息
    weChatmessage = <<~WeChat
        # 新版本测试包:
        \n
        **版本号:** #{version} ( #{build} )
        \n
        **更新内容:**
        --------------------------------
        #{changeLog}
        --------------------------------
        [点击下载](#{download_url})
    WeChat

    # 企业微信通知
    sh %(
      curl 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=#{wecom_webhook_key}' \
      -H 'Content-Type: application/json' \
      -d '{
        "msgtype": "markdown",
        "markdown": {
          "content": "#{weChatmessage}"
        }
      }'
    )
  end
end
  • 参数解析:
  • scheme:工程名字
  • profile_name: 描述文件名字
  • pgyer_api_key:蒲公英的api key(在蒲公英平台 - 用户 - API信息中查看)
  • pgyer_user_key:蒲公英user key(在蒲公英平台 - 用户 - API信息中查看),新版不需要userkey了
  • wecom_webhook_key:企业微信 群机器人的key(首先要管理员添加一个群机器人)
  • export_method:描述文件类型(如果是测试描述文件则是"ad-hoc";如果是开发的描述文件则是development

3. 使用

在项目目录中执行如下语句,打包、上传蒲公英并通知企业微信群
fastlane debugToPgy

五、打包至TestFlight

1. 配置 Fastfile

default_platform(:ios)

platform :ios do

    # 工程名字
    scheme = ENV["SCHEME"]
    # BundleId
    bundle_id = ENV["BUNDLE_ID"]
    # 机器人配置
    wecom_webhook_key = ENV["WECOM_WEBHOOK_KEY"]
    # 项目版本号
    version = get_version_number(xcodeproj: "#{scheme}.xcodeproj")
    build = get_build_number(xcodeproj: "#{scheme}.xcodeproj")

    # TestFlight更新信息
    testFlightLog = <<~TESTFLIGHTLOG
- 修复已知问题
    TESTFLIGHTLOG

  desc "打包、上传TestFlight并通知企业微信群"
  lane :release do

    # 描述文件
    profile_name = ENV["STAGING_PROFILE_NAME"]

    # TestFlight外测链接
    testFlight_url = "发布外测版本的链接"

    # 清理构建缓存
    clean_build_artifacts

    # 连接AppStore秘钥
    app_store_connect_api_key(
      key_id: ENV["APP_STORE_CONNECT_API_KEY_KEY_ID"],
      issuer_id: ENV["APP_STORE_CONNECT_API_ISSUER_ID"],
      key_filepath: ENV["APP_STORE_CONNECT_API_KEY_FILEPATH"]
    )

    # 构建 IPA 包
    gym(
      scheme: scheme,
      export_method: "app-store",
      export_options: {
        provisioningProfiles: {
          bundle_id => profile_name
        },
      output_directory: "./fastlane/testFlightOutput/ipa",   # 指定 .ipa 的输出文件夹
      output_name: "#{scheme}.ipa"   # 指定生成的 .ipa 文件名
      }
    )
    
    # 上传到 App Store Connect(仅 TestFlight)
    upload_to_testflight(
      skip_waiting_for_build_processing: true
    )

    # 发送到企业微信信息
    weChatmessage = <<~WeChat
        # 新版本 TestFlight 更新通知:
        \n
        **版本号:** #{version} ( #{build} )
        \n
        **更新内容:**
        --------------------------------
        #{testFlightLog}
        --------------------------------
        \n
        内部测试人员,请注意查收TestFlight更新推送!
        \n
        [外部测试下载链接](#{testFlight_url})
    WeChat

    # 企业微信通知
    sh %(
      curl 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=#{wecom_webhook_key}' \
      -H 'Content-Type: application/json' \
      -d '{
        "msgtype": "markdown",
        "markdown": {
          "content": "#{weChatmessage}"
        }
      }'
    )
  end
end
  • 参数解析:
  • scheme:工程名字
  • profile_name: 描述文件名字
  • wecom_webhook_key:企业微信 群机器人的key(首先要管理员添加一个群机器人)
  • export_method:描述文件类型

2. 使用

在项目目录中执行如下语句,打包、上传TestFlight并通知企业微信群
fastlane release

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容