From b53ca30974971673cb62cdb84a3686cd0c683327 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Ch=C4=99ci=C5=84ski?= Date: Wed, 16 Jul 2025 17:32:21 +0200 Subject: [PATCH] [BRE-769] Use Fastlane to keep github releases in sync with mobile deploy versions (#5219) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Patrick Honkonen <1883101+SaintPatrck@users.noreply.github.com> Co-authored-by: Álison Fernandes --- .github/workflows/publish-github-release.yml | 38 +++++++++++++++----- fastlane/Fastfile | 34 ++++++++++++++++++ 2 files changed, 64 insertions(+), 8 deletions(-) diff --git a/.github/workflows/publish-github-release.yml b/.github/workflows/publish-github-release.yml index e752d4921a..e6192e60e4 100644 --- a/.github/workflows/publish-github-release.yml +++ b/.github/workflows/publish-github-release.yml @@ -1,14 +1,36 @@ -name: Publish GitHub Release as newest +name: Publish Password Manager and Authenticator GitHub Release as newest on: workflow_dispatch: + schedule: + - cron: '0 3 * * 1-5' -permissions: {} +permissions: + contents: write + id-token: write + actions: read jobs: - stub: - runs-on: ubuntu-24.04 - name: Stub - steps: - - name: Stub - run: echo "This is a stub job to trigger the workflow." + publish-release-password-manager: + name: Publish Password Manager Release + uses: bitwarden/gh-actions/.github/workflows/_publish-mobile-github-release.yml@main + with: + release_name: "Password Manager" + workflow_name: "publish-github-release.yml" + credentials_filename: "play_creds.json" + project_type: android + check_release_command: > + bundle exec fastlane getLatestPlayStoreVersion package_name:com.x8bit.bitwarden track:production + secrets: inherit + + publish-release-authenticator: + name: Publish Authenticator Release + uses: bitwarden/gh-actions/.github/workflows/_publish-mobile-github-release.yml@main + with: + release_name: "Authenticator" + workflow_name: "publish-github-release.yml" + credentials_filename: "authenticator_play_store-creds.json" + project_type: android + check_release_command: > + bundle exec fastlane getLatestPlayStoreVersion package_name:com.bitwarden.authenticator track:production + secrets: inherit diff --git a/fastlane/Fastfile b/fastlane/Fastfile index 3b708483df..454b806547 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -265,6 +265,40 @@ platform :android do releaseNotes end + desc "Get latest published version for a given package name and Play Store track" + lane :getLatestPlayStoreVersion do |options| + package_name = options[:package_name] + track = options[:track] + # Hardcoding paths for now, it will simplify transitioning to the new build .env files + case package_name + when "com.x8bit.bitwarden", "com.x8bit.bitwarden.beta" + json_key = "secrets/play_creds.json" + when "com.bitwarden.authenticator" + json_key = "secrets/authenticator_play_store-creds.json" + else + UI.important "Unexpected package name: #{package_name}, using default play store json key" + json_key = "secrets/play_creds.json" + end + + release_name = google_play_track_release_names( + package_name: package_name, + track: track, + json_key: json_key, + ) + + version_code = google_play_track_version_codes( + package_name: package_name, + track: track, + json_key: json_key, + ) + + latest_version_name = release_name.first + latest_version_number = version_code.first.to_s.strip + + UI.message("version_name: #{latest_version_name}") + UI.message("version_number: #{latest_version_number}") + end + # Authenticator desc "Apply build version information" fastlane_require "time"