【问题标题】:Passing a Build Number to xcargs in Fastlane/Gym将内部版本号传递给 Fastlane/Gym 中的 xcargs
【发布时间】:2018-08-10 21:32:01
【问题描述】:

我有一个带有一些应用扩展的应用。为了保持应用扩展和主应用使用相同的版本和内部版本号,我配置了一个用户定义的变量,例如“MY_BUILD_NUMBER”和“MY_VERSION”。在我的应用程序和我的扩展 Info.plist 文件中,我只需通过 ${MY_BUILD_NUMBER}${MY_VERSION} 加载这些变量。

这个过程非常适合保持我的版本和构建同步。我现在正在尝试研究是否可以通过健身房将 Jenkins 的内部版本号传递到 fastlane 并更新我的 xcargs。但是,我一直未能正确使用所需的引号。

例子表明我需要这样设置:

gym(xcargs: "my_build_number='123'")

但是当我尝试将其作为选项传入时,我可以传入“123”的内部版本号。但我正在努力解决如何在 xcargs "my_build_number='123'" 中插入我需要的字符串。

有没有人成功地完成了这样的事情,可以提供一些见解?我需要以某种方式转义引号吗?

【问题讨论】:

    标签: ios xcode shell fastlane fastlane-gym


    【解决方案1】:

    我们在fastlanegym之前同时设置应用和扩展的捆绑版本:

    set_info_plist_value(
      key: 'CFBundleVersion',
      value: build_number,
      path: info_plist_file
    )
    
    version_string = get_info_plist_value(
      key: 'CFBundleShortVersionString',
      path: info_plist_file
    )
    
    update_info_plist(
      xcodeproj: project_filepath,
      plist_path: notification_service_info_plist_relpath,
      block: lambda do |plist|
        plist['CFBundleVersion'] = build_number
        plist['CFBundleShortVersionString'] = version_string
      end
    )
    

    【讨论】:

      【解决方案2】:

      我可以使用以下语法将变量作为 xcarg 传递:

      变量 -> @build_number

      xcargs: "BUILD_VERSION='#{@build_number}'"

      ~或~

      变量 -> ENV["BUILD_NUMBER"]

      xcargs: "BUILD_VERSION='#{ENV["BUILD_NUMBER"]}'"

      完整示例:

      @build_number = latest_testflight_build_number(app_identifier: @AppBundleID) + 1
      increment_build_number(build_number: @build_number)
      build_app(scheme: "Release", export_method: "app-store", xcargs: "BUILD_VERSION='#{@build_number}'")
      

      【讨论】:

      • 这应该是公认的答案
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多