Android CI/CD 与 Github 动作和快车道

Android CI/CD with Github Actions and Fastlane

我正在使用 fastlane 自动部署到 Play 商店。这里以 alpha 通道为例。

lane :alpha do    
    gradle(task: 'clean')
    gradle(
      task: 'assemble',
      build_type: 'Release',
      properties: {
        "android.injected.signing.store.file" => ENV["ANDROID_KEYSTORE"],
        "android.injected.signing.store.password" => ENV["ANDROID_KEYSTORE_PASSWORD"],
        "android.injected.signing.key.alias" => ENV["ANDROID_KEY_ALIAS"],
        "android.injected.signing.key.password" => ENV["ANDROID_KEY_PASSWORD"],
      }
    )
    upload_to_play_store(track: 'alpha')
end

我想通过 Github 操作自动执行此部署。每当提交 staging 时,运行 fastlane alpha。然而,我 运行 关注的问题是版本控制。我需要在我的 build.gradle 文件中添加 versionCode。我在 运行ning fastlane alpha.

之前一直在手动执行此操作

我想消除在提交之前手动增加此值的需要,我该如何实现?

我看到 this fastlane 插件可以增加版本代码。例如,如果我在 versionCode 为 1 时提交一次,那么我的工作流将自动将 versionCode 递增到 2。当我再次提交时,versionCode 仍为 1,并且 Github 会将其撞到 2。但是,Play 商店需要 versionCode 3。理想的解决方案是让 Github 从 Google Play 商店查询当前的 versionCode我的应用程序并将 + 1 提供给 fastlane。我已经搜索了一种方法来执行此操作,但找不到解决方案。

你试过这个吗:https://docs.fastlane.tools/actions/google_play_track_version_codes/ ?

    g = google_play_track_version_codes
    gb = google_play_track_version_codes(track: 'beta')
    ga = google_play_track_version_codes(track: 'alpha')
    max_value = [g[0].to_i, gb[0].to_i, ga[0].to_i].max
    version_updated = max_value + 1
    increment_version_code(app_project_dir: "./app", version_code: version_updated.to_i)

基本上我正在获取 Google Play 的所有版本代码并增加 +1 最大版本,然后使用版本控制插件在 build.gradle

上更新它

您可以按照 Atul Anand this Medium post 中的描述添加一条通道来执行此操作:

lane:IncrementBuildNumber do

    path = '../app/build.gradle'
    re = /versionCode\s+(\d+)/
    s = File.read(path)
    versionCode = s[re, 1].to_i
    s[re, 1] = (versionCode + 1).to_s
    f = File.new(path, 'w')
    f.write(s)
    f.close

end