From 95a1e3a133c27546e43a3a4201dcc462f15d0393 Mon Sep 17 00:00:00 2001 From: alexandrev-tibco Date: Fri, 7 Aug 2026 11:10:22 +0200 Subject: [PATCH] fastlane: lanes submit y status submit envia a review una build ya subida: la 2.0.1 build 66 ya estaba en TestFlight, y release habria reconstruido mientras publish nunca envia. Distribucion automatica (AFTER_APPROVAL) y sin tocar screenshots, que se heredan. status lista el estado de cada version en App Store Connect. Sirvio para confirmar que la 2.0.1 quedo en AFTER_APPROVAL y no en MANUAL como la 2.0. Ojo: asc_api_key devuelve el hash de opciones de fastlane, no un token de spaceship; hay que construir el token aparte. Co-Authored-By: Claude Claude-Session: https://claude.ai/code/session_012Ks8uUcMA9mjypVK7F2Pkt --- fastlane/Fastfile | 36 ++++++++++++++++++++++++++++++++++++ fastlane/README.md | 16 ++++++++++++++++ 2 files changed, 52 insertions(+) diff --git a/fastlane/Fastfile b/fastlane/Fastfile index 2c28484..d48587e 100644 --- a/fastlane/Fastfile +++ b/fastlane/Fastfile @@ -59,6 +59,42 @@ platform :ios do newest ? newest.last : [] end + desc "Show the App Store state of each version (review status, release type)" + lane :status do + require 'spaceship' + # asc_api_key returns fastlane's option hash, not a Spaceship token. + Spaceship::ConnectAPI.token = Spaceship::ConnectAPI::Token.create( + key_id: `pass show appstore/api-key-id`.strip, + issuer_id: `pass show appstore/issuer-id`.strip, + key: `pass show appstore/api-key-p8`.strip + ) + app = Spaceship::ConnectAPI::App.find("com.alexandrevazquez.mealmood") + app.get_app_store_versions(includes: "build").each do |v| + UI.message("#{v.version_string} — #{v.app_store_state} — release: #{v.release_type} — build: #{v.build&.version}") + end + end + + # For a build that is already on TestFlight: `release` would rebuild it and + # `publish` never submits. Screenshots are left alone — they carry over. + desc "Submit an already-uploaded build for App Store review (automatic release)" + lane :submit do |options| + UI.user_error!("pass build:") unless options[:build] + upload_to_app_store( + api_key: asc_api_key, + app_version: options[:version] || "2.0.1", + build_number: options[:build], + skip_binary_upload: true, + skip_metadata: false, + skip_screenshots: true, + overwrite_screenshots: false, + submit_for_review: true, + automatic_release: true, + force: true, + precheck_include_in_app_purchases: false, + run_precheck_before_submit: false + ) + end + # Safety net for the Xcode build phase, which only uploads the dSYM produced # locally. Run it once App Store Connect has finished processing the build — # `beta` uses skip_waiting_for_build_processing, so right after an upload the diff --git a/fastlane/README.md b/fastlane/README.md index e9ce1a6..ecf6f0e 100644 --- a/fastlane/README.md +++ b/fastlane/README.md @@ -23,6 +23,22 @@ For _fastlane_ installation instructions, see [Installing _fastlane_](https://do Push a new beta build to TestFlight +### ios status + +```sh +[bundle exec] fastlane ios status +``` + +Show the App Store state of each version (review status, release type) + +### ios submit + +```sh +[bundle exec] fastlane ios submit +``` + +Submit an already-uploaded build for App Store review (automatic release) + ### ios refresh_dsyms ```sh