#(2021.1追記)
CarthageのGitHubでワークアラウンドが記載されていました
https://github.com/Carthage/Carthage/blob/master/Documentation/Xcode12Workaround.md
#(2020.11追記)
https://blog.kishikawakatsumi.com/entry/2019/06/19/160150
を参考に、Carthageのビルド済みライブラリをダウンロードすることで、Bitrise上でビルドを行わないようにしたので諸々解決。
エラー内容
- BitriseのCarthageステップにて以下のエラーが発生。
Build Failed
Task failed with exit code 1:
/usr/bin/xcrun lipo -create
~~ 省略 ~~
This usually indicates that project itself failed to compile. Please check the xcodebuild log for more details: /var/folders/6q/wgy6jtp12w5gzgm9lzcglpqw0000gn/T/carthage-xcodebuild.50gMh8.log
Carthage command failed, error: exit status 1
Please check the xcodebuild log
と表示されていたのでログファイルを開くと、ファイルの最後にはBuild Succeeded
と表示されていた。
🤔
調査
- どうやら同じような内容で困っている方がいるらしい→https://github.com/Carthage/Carthage/issues/3019
- シェルスクリプトでxcconfigをごにょごにょすればいいらしい→https://github.com/Carthage/Carthage/issues/3019#issuecomment-665136323
Bitriseへの適用
- Carthageステップの前にScriptステップに変更
- Script contentに以下を記述(上記リンクからほぼコピペ)
#!/usr/bin/env bash
# Copied this script from 'https://github.com/Carthage/Carthage/issues/3019#issuecomment-681825436'.
## コピペここから
set -euo pipefail
xcconfig=$(mktemp /tmp/static.xcconfig.XXXXXX)
trap 'rm -f "$xcconfig"' INT TERM HUP EXIT
# For Xcode 12 make sure EXCLUDED_ARCHS is set to arm architectures otherwise
# the build will fail on lipo due to duplicate architectures.
# Xcode 12 beta 6
echo 'EXCLUDED_ARCHS__EFFECTIVE_PLATFORM_SUFFIX_simulator__NATIVE_ARCH_64_BIT_x86_64__XCODE_1200__BUILD_12A8189n = arm64 arm64e armv7 armv7s armv6 armv8' >> $xcconfig
echo 'EXCLUDED_ARCHS__EFFECTIVE_PLATFORM_SUFFIX_simulator__NATIVE_ARCH_64_BIT_x86_64__XCODE_1200 = $(EXCLUDED_ARCHS__EFFECTIVE_PLATFORM_SUFFIX_simulator__NATIVE_ARCH_64_BIT_x86_64__XCODE_1200__BUILD_$(XCODE_PRODUCT_BUILD_VERSION))' >> $xcconfig
echo 'EXCLUDED_ARCHS = $(inherited) $(EXCLUDED_ARCHS__EFFECTIVE_PLATFORM_SUFFIX_$(EFFECTIVE_PLATFORM_SUFFIX)__NATIVE_ARCH_64_BIT_$(NATIVE_ARCH_64_BIT)__XCODE_$(XCODE_VERSION_MAJOR))' >> $xcconfig
## コピペここまで
envman add --key XCODE_XCCONFIG_FILE --value "$xcconfig"
説明
-
スクリプトを動かせばいいことは分かったので、Carthageステップの前にScriptステップを追加した
- 同じエラーが表示された
-
Carthageステップの後にScriptステップを追加し、環境変数を表示すると、設定したはずの
XCODE_XCCONFIG_FILE
が存在しなかった- Scriptで設定した環境変数はステップごとに消えるっぽい
- 公式ドキュメントにも以下のような記述がある
You can expose Env Vars from one Step and make it available for every other Step performed after the Step during the build. You can use envman to manage Env Vars.
(訳)あるステップからEnv Varsを公開し、ビルド中のステップ以降に実行された他のステップでも利用できるようにすることができます。Env Vars の管理には envman を使うことができます。 -
ステップ間で環境変数を維持できるように、上記のenvmanを使用
最後に
- 同じビルド内であればワークフロー間も環境変数は維持されていた
- GitHubのissueなかったら詰んでました
- Beta 7が出たらスクリプト書き換えないといけなさそう