TASIOMIND.DEV — OPERATIONAL▸▸▸FULL STACK DEVELOPER @ GWQ SERVICEPLUS AG▸▸▸FOUNDER — K8SGPT.AI▸▸▸OPEN SOURCE: ACTIVE▸▸▸DISTRIBUTED SYSTEMS / KUBERNETES / AI▸▸▸RUST + GO + PYTHON▸▸▸FIELD TESTED / STATUS — NOMINAL▸▸▸LOCATION: EUROPE/BERLIN▸▸▸TASIOMIND.DEV — OPERATIONAL▸▸▸FULL STACK DEVELOPER @ GWQ SERVICEPLUS AG▸▸▸FOUNDER — K8SGPT.AI▸▸▸OPEN SOURCE: ACTIVE▸▸▸DISTRIBUTED SYSTEMS / KUBERNETES / AI▸▸▸RUST + GO + PYTHON▸▸▸FIELD TESTED / STATUS — NOMINAL▸▸▸LOCATION: EUROPE/BERLIN▸▸▸

Managing release notes for Android and iOS apps using Fastlane

February 10, 2021

Ziel

Release Notes fuer Stores und interne Changelogs sauber trennen und mit Fastlane verwalten.

Zwei Ebenen:

  • User-facing Release Notes (kurz, marketing)
  • Technischer CHANGELOG (Detail, intern)

Android (Play Console)

Fastlane supply nutzt eine feste Struktur:

code
fastlane/metadata/android/en-US/changelogs/
  default.txt
  100000.txt
  100100.txt

Regeln:

  • default.txt als Fallback
  • Dateiname = versionCode
  • Pro Sprache eigener Ordner (en-US, de-DE)

Firebase App Distribution

Fastlane Action firebase_app_distribution akzeptiert:

  • release_notes
  • release_notes_file

Beispiel:

code
firebase_app_distribution(
  app: ENV["FIREBASE_APP_ID"],
  testers: ENV["FIREBASE_TESTERS"],
  groups: ENV["FIREBASE_GROUPS"],
  release_notes_file: "metadata/android/en-GB/changelogs/default.txt"
)

Dynamische Auswahl (versionCode)

code
android_version_code = android_get_version_code(
  gradle_file: "android/app/build.gradle"
)

release_notes_file = "metadata/android/en-GB/changelogs/#{android_version_code}.txt"
fallback_file = "metadata/android/en-GB/changelogs/default.txt"

release_notes = if File.exist?(release_notes_file)
  { release_notes_file: release_notes_file }
elsif File.exist?(fallback_file)
  { release_notes_file: fallback_file }
else
  { release_notes: "Bug fixes and performance improvements" }
end

firebase_app_distribution(**release_notes)

iOS Hinweis

Release Notes fuer iOS werden meist direkt in App Store Connect verwaltet. Fastlane kann diese via deliver aktualisieren, aber die Prozesse sind haeufig team-abhaengig.

Links