LoginSignup
5
3

More than 3 years have passed since last update.

BitriseでCarthage + Xcode 12 betaを使用してビルドする

Last updated at Posted at 2020-09-01

(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と表示されていた。

🤔

調査

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が出たらスクリプト書き換えないといけなさそう

参考

5
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
3