首页 > 解决方案 > 带有 Github Actions 和 Fastlane 的 Android CI/CD

问题描述

我正在使用 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. 然而,我遇到的问题是版本控制。我需要versionCode在我的build.gradle文件中碰撞。在运行之前我一直在手动执行此操作fastlane alpha

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

我见过这个fastlane 插件来增加版本代码。例如,如果我在 versionCode 为 1 时提交一次,那么我的工作流程将自动将 递增versionCode到 2。当我再次提交时,versionCode仍然是 1,Github 会将它撞到 2。但是,Play 商店需要versionCode3. 理想的解决方案是让 Github 从 Google Play 商店查询versionCode我的应用程序的当前版本并将其提供+ 1给 fastlane。我已经寻找一种方法来做到这一点,但找不到解决方案。

标签: androidgithubfastlanegithub-actions

解决方案


您是否尝试过: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 上更新它


推荐阅读