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
我正在使用 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