[ci-bitrise] Revert to fastlane-driven build — xcode-archive can't parse this project

xcode-archive@5 failed: 'unkown SDKROOT: auto'. Darwin/PediFoods.xcconfig
sets SDKROOT = auto and SUPPORTED_PLATFORMS = iphoneos iphonesimulator
macosx (Skip's multi-platform build target) — same root cause as the
earlier PLATFORM_DISPLAY_NAME failure from manage-ios-code-signing.
Both are Bitrise step-side project parsers that pre-guess a single
platform before invoking xcodebuild, and neither understands this
project's build shape.

xcodebuild itself has no problem with SDKROOT = auto (confirmed via a
local build). Only Bitrise's own step parsers choke on it. Going through
fastlane's build_app instead sidesteps that parser entirely — it's the
same approach the Darwin/fastlane/Fastfile already used before, restored
here with the earlier apikey.json JSON-escaping and DEVELOPMENT_TEAM
injection fixes kept.
This commit is contained in:
Daniel Arantes Loverde
2026-07-09 17:17:07 -03:00
parent 20e2ee3c38
commit 0d9ebbd621
2 changed files with 69 additions and 62 deletions

View File

@@ -9,27 +9,25 @@ meta:
app:
envs:
- BITRISE_PROJECT_PATH: Darwin/PediFoods.xcodeproj
opts:
is_expand: false
- BITRISE_SCHEME: PediFoods App
opts:
is_expand: false
- BITRISE_DISTRIBUTION_METHOD: app-store
opts:
is_expand: false
- APPLE_ID: developer@loverde.com.br
# MANUAL (Bitrise Secrets tab — never commit these):
# ASC_KEY_ID → App Store Connect API Key ID
# ASC_ISSUER_ID → App Store Connect Issuer ID
# ASC_KEY_CONTENT → .p8 file content base64-encoded
# ITC_TEAM_ID → iTunes Connect Team ID (numeric)
# ASC_KEY_CONTENT → .p8 file content (raw, written verbatim into apikey.json)
# DEVELOPMENT_TEAM → Apple Developer Team ID, written into
# Darwin/fastlane/AppStore.xcconfig at build time
# (Darwin/PediFoods.xcconfig leaves it blank on
# purpose — this project has no VERSIONING_SYSTEM /
# hardcoded team like LC Wallet, so it's injected
# here instead)
# (Darwin/PediFoods.xcconfig leaves it blank on purpose)
#
# NOTE: this project builds via fastlane's build_app (gym), not Bitrise's
# own xcode-archive/manage-ios-code-signing steps. Darwin/PediFoods.xcconfig
# sets SDKROOT = auto and SUPPORTED_PLATFORMS = iphoneos iphonesimulator
# macosx (Skip's multi-platform build), and Bitrise's own steps pre-parse
# the project to guess a single platform before invoking xcodebuild — that
# parser doesn't understand SDKROOT = auto and fails outright. xcodebuild
# itself handles it fine; only Bitrise's step-side parser chokes, so we
# go through fastlane directly instead.
# ─── WORKFLOWS ────────────────────────────────────────────────────────────────
workflows:
@@ -45,52 +43,46 @@ workflows:
- content: |
cd $BITRISE_SOURCE_DIR
# CURRENT_PROJECT_VERSION lives in Skip.env — shared by both
# Darwin/PediFoods.xcconfig and Android/settings.gradle.kts.
# No VERSIONING_SYSTEM is set on the target, so agvtool
# (which LC Wallet uses) does not apply to this project.
# Darwin/PediFoods.xcconfig and Android/settings.gradle.kts,
# not a standard Xcode "Apple Generic Versioning" setting,
# so agvtool does not apply here.
sed -i '' "s/CURRENT_PROJECT_VERSION = .*/CURRENT_PROJECT_VERSION = $BITRISE_BUILD_NUMBER/" Skip.env
- script@1:
title: Write code signing team
title: Write code signing team and App Store Connect API key
inputs:
- content: |
echo "DEVELOPMENT_TEAM = $DEVELOPMENT_TEAM" >> "$BITRISE_SOURCE_DIR/Darwin/fastlane/AppStore.xcconfig"
- xcode-archive@5:
# ASC_KEY_CONTENT is the raw multi-line .p8 PEM content — build
# the JSON with Ruby's encoder so its embedded newlines get
# escaped correctly instead of breaking the JSON string.
export APIKEY_PATH="$BITRISE_SOURCE_DIR/Darwin/fastlane/apikey.json"
ruby -rjson -e '
File.write(ENV["APIKEY_PATH"], JSON.generate({
"key_id" => ENV["ASC_KEY_ID"],
"issuer_id" => ENV["ASC_ISSUER_ID"],
"key" => ENV["ASC_KEY_CONTENT"],
"in_house" => false
}))
'
- fastlane@3:
inputs:
- project_path: $BITRISE_PROJECT_PATH
- scheme: $BITRISE_SCHEME
- distribution_method: $BITRISE_DISTRIBUTION_METHOD
- automatic_code_signing: api-key
- register_test_devices: "no"
- deploy-to-itunesconnect-deliver@2:
inputs:
- itunescon_user: $APPLE_ID
- api_key_path: ""
- api_issuer: $ASC_ISSUER_ID
- submit_for_review: "no"
- skip_metadata: "yes"
- skip_screenshots: "yes"
- lane: beta
- work_dir: $BITRISE_SOURCE_DIR/Darwin
# ── Full release → App Store ───────────────────────────────────────────────
release:
description: Build, sign, push metadata, upload binary to App Store
envs:
- ASC_KEY_ID: $ASC_KEY_ID
- ASC_ISSUER_ID: $ASC_ISSUER_ID
- ASC_KEY_CONTENT: $ASC_KEY_CONTENT
- ITC_TEAM_ID: $ITC_TEAM_ID
description: Build, sign, and upload to App Store
steps:
- git-clone@8: {}
- script@1:
title: Verify ASC secrets
title: Verify secrets
inputs:
- content: |
if [ -z "$ASC_KEY_ID" ]; then
echo "ERROR: ASC_KEY_ID is empty"
if [ -z "$ASC_KEY_ID" ] || [ -z "$DEVELOPMENT_TEAM" ]; then
echo "ERROR: ASC_KEY_ID / ASC_ISSUER_ID / ASC_KEY_CONTENT / DEVELOPMENT_TEAM must be set in Bitrise Secrets"
exit 1
fi
echo "ASC_KEY_ID is set (length: ${#ASC_KEY_ID})"
echo "ASC_ISSUER_ID is set (length: ${#ASC_ISSUER_ID})"
echo "ASC_KEY_CONTENT is set (length: ${#ASC_KEY_CONTENT})"
echo "DEVELOPMENT_TEAM is set (length: ${#DEVELOPMENT_TEAM})"
- script@1:
title: Set build number
@@ -99,23 +91,29 @@ workflows:
cd $BITRISE_SOURCE_DIR
sed -i '' "s/CURRENT_PROJECT_VERSION = .*/CURRENT_PROJECT_VERSION = $BITRISE_BUILD_NUMBER/" Skip.env
- script@1:
title: Write code signing team
title: Write code signing team and App Store Connect API key
inputs:
- content: |
echo "DEVELOPMENT_TEAM = $DEVELOPMENT_TEAM" >> "$BITRISE_SOURCE_DIR/Darwin/fastlane/AppStore.xcconfig"
- xcode-archive@5:
inputs:
- project_path: $BITRISE_PROJECT_PATH
- scheme: $BITRISE_SCHEME
- distribution_method: $BITRISE_DISTRIBUTION_METHOD
- automatic_code_signing: api-key
# ASC_KEY_CONTENT is the raw multi-line .p8 PEM content — build
# the JSON with Ruby's encoder so its embedded newlines get
# escaped correctly instead of breaking the JSON string.
export APIKEY_PATH="$BITRISE_SOURCE_DIR/Darwin/fastlane/apikey.json"
ruby -rjson -e '
File.write(ENV["APIKEY_PATH"], JSON.generate({
"key_id" => ENV["ASC_KEY_ID"],
"issuer_id" => ENV["ASC_ISSUER_ID"],
"key" => ENV["ASC_KEY_CONTENT"],
"in_house" => false
}))
'
- fastlane@3:
inputs:
- lane: release
- work_dir: $BITRISE_SOURCE_DIR/Darwin
- deploy-to-bitrise-io@2: {}
# ─── TRIGGER MAP ──────────────────────────────────────────────────────────────
# ─── TRIGGER MAP ────────────────────────────────────────────────────────────────
trigger_map:
- push_branch: develop
workflow: beta