Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Prepare CirclrCI's macOS Intel Support Deprecation
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Kuroruri
May 21, 2024
Programming
58
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Prepare CirclrCI's macOS Intel Support Deprecation
Kuroruri
May 21, 2024
More Decks by Kuroruri
See All by Kuroruri
CI/CD·自動化入門
kuroruri
1
4.8k
Knowledge obtained by making about 10 apps with Redux in iOS
kuroruri
0
1k
Other Decks in Programming
See All in Programming
自分的「カンファレンスの楽しみ方」
syumai
0
200
AWS Step Functions 大規模並列の壁を越える / jaws-sonic-2026-niigata-step-functions
kasacchiful
PRO
0
400
{ Android | Kotlin } Gradle Plugin in 2026
ryunen344
1
290
go-spidermonkeyでAIエージェントのCode Modeを実装する
syumai
3
1.5k
標準パッケージに uuid が追加された 背景から見る Go らしい意思決定 / go_127_uuid_decision
convto
4
3.3k
個人開発基盤をまるごとCloudflareに引っ越して爆速で総合的体験を向上させた話
tinykitten
0
130
Gmail/Google DriveをトリガーにAIエージェントを動かそう! / Run AI agents with Gmail/Google Drive as triggers!
har1101
3
480
AIと壁打ちしながら進めるコスト管理
fufuhu
2
2k
初心者DevRelとして参加者だった私が、DevRel Talks!#2に登壇するまでにしてきたこと
sokohirai
0
340
高専キャリア LT 発表内容
crysta1221
6
5.6k
Family mrubyの進捗
kishima
1
100
まだ間に合う!今年の夏こそSchemeのマクロ展開器を完全理解!
omasanori
0
640
Featured
See All Featured
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
202
76k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
540
VelocityConf: Rendering Performance Case Studies
addyosmani
331
25k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
970
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
210
Site-Speed That Sticks
csswizardry
13
1.5k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
410
How to make the Groovebox
asonas
2
2.4k
Google's AI Overviews - The New Search
badams
0
1.6k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.2k
Transcript
CircleCI の Intel macOS 廃止に備える Mobile勉強会 Wantedly × チームラボ ×
Sansan #14
- 名前 - くろるり - 所属 - teamLab Inc. -
仕事 - iOSアプリ作る - アプリ開発効率化有志チーム - 業務改善有志チーム 本日話している人
はじめに
質問 : 開発者の PC は Apple Silicon ?
おそらく 殆ど YES コンパイル早くなるしね 多分みんな乗り換えてるよね
質問 : CI/CD サービスのほうは?
多分、半々 概ね料金上がるし
https://discuss.circleci.com/t/macos-intel-support-deprecation-in-januar y-2024/48718 28 June 2024 - Gen2 will no longer
be available to use - Customers will need to update their config to a new resource class before this date to avoid build errors とはいえ 終わりは来る
CI/CD での Apple Silicon 対応時の 引っ掛かりポイントを 幾つかピックアップ
本題
コード側は Apple Silicon 対応 ?
事例 : ライブラリが arm64-simulator 非対応 - Google の MLKit など
arm64-simulator 非対応ライブラリが入っている - このため arm64-simulator での Unit Test が動かない - 或いはマルチモジュール構成でコンパイ ルエラーが発生する - この状態になっていないかの判断は BuildSettings を見ればわかる $ bundle exec fastlane my_test_lane (中略) ❌ /Users/distiller/project/MyProject/MyModel.swift: could not find module '<SubModule>' for target 'x86_64-apple-ios-simulator'; found: arm64-apple-ios-simulator,
対応 : rosetta 入れて rosetta simulator でテストする - macOS Orb
使って rosetta いれる - https://circleci.com/developer/ja/orbs /orb/circleci/macos#commands-install- rosetta - fastlane run_tests ( scan ) の run_rosetta_simulator を true にする - https://docs.fastlane.tools/actions/sc an/ - とはいえ根本療法は arm64 simulator に 対応することに違いはない jobs: my_job: executor: my_executor steps: - checkout - macos/install-rosetta lane :my_test_lane do scan( run_rosetta_simulator: true, formatter: "xcpretty-json-formatter", clean: true, skip_slack: true, result_bundle: true, ) end
使用ツール類は Apple Silicon 対応?
install_mint: steps: - restore_cache: keys: - mintbin-{{ checksum ".xcode-version" }}-{{
checksum "DevelopmentTools/Package.resolved" }} - run: name: Build Mint Binary command: | DevelopmentTools/.build/release/mint --version || (bundle exec fastlane build_tools_install package_path:./DevelopmentTools product:mint && DevelopmentTools/.build/release/mint --version) - save_cache: key: mintbin-{{ checksum ".xcode-version" }}-{{ checksum "DevelopmentTools/Package.resolved" }} paths: - ./DevelopmentTools/.build ※ build_tools_install は `spm build release` を叩く自作 lane 事例: ツールのバイナリキャッシュが x86_64 のまま - Swift 製 CLI ツールを SPM で 管理しているパターン - SPM の Build Tools Plugin ではない、 CLI ツール自作に近い形の話 - CI/CD パイプライン中で実行バイナリを ビルドしてキャッシュを持ってる - Homebrew でツールをインストールして キャッシュを持ってるパターン
対応: キャッシュ分ける - CircleCI にはキャッシュを 削除する機能が無い - キャッシュのキーが変わりさえすれば 問題がないので、キャッシュのキーに CPU
アーキテクチャを含める変更が良い install_mint: steps: - restore_cache: keys: - mintbin-{{ arch }}-{{ checksum ".xcode-version" }}-{{ checksum "DevelopmentTools/Package.resolved" }} - run: name: Build Mint Binary command: | DevelopmentTools/.build/release/mint --version || (bundle exec fastlane build_tools_install package_path:./DevelopmentTools product:mint && DevelopmentTools/.build/release/mint --version) - save_cache: key: mintbin-{{ arch }}-{{ checksum ".xcode-version" }}-{{ checksum "DevelopmentTools/Package.resolved" }} paths: - ./DevelopmentTools/.build ※ build_tools_install は `spm build release` を叩く自作 lane
事例: そもそもツールが arm64 対応してない - 例えば danger-xcov で使われる xcov の
core プログラムが arm64 未対応 - https://github.com/fastlane-communit y/xcov/issues/214#issuecomment-161 2024225 - https://discuss.circleci.com/t/danger- xcov-fails-on-apple-silicon/48360
対応: rosetta 入れる - 根本療法はツール側の arm64 対応 - 暫定対処的には rosetta
を入れてしまえ ば良い
他、CircleCI 固有のあれこれ
事例: シミュレータタイムアウト問題 ( Xcode 15.0.1 ) - fastlane の scan
を実行すると コンパイルは終わるけどシミュレータが 起動せずに timeout が発生 - https://discuss.circleci.com/t/too-long -with-no-output-exceeded-30m0s-con text-deadline-exceeded/49794 - timeout 発生しなくても時間が伸びるの で金がかかる - 一見 macos/preboot-simulator で 解決するように思えるが・・・
例外: rosetta simulator 指定時 - fastlaen の scan は run_rosetta_simulator
を指定すると device の指定が正しく動作しないらしい - https://github.com/fastlane/fastlane/ issues/21293 - つまり preboot した device を使わせる ことが出来ない - 勝手に device を選んでその起動待ちで timeout してしまう
対応: No Xcode 15.0.x, Use Xcode 15.1.0 or later -
パフォーマンスが悪い Xcode 15.0.x を 使わなければ良い - Xcode 15.1.0 以上だと改善するので、 Xcode 15.1.0 以上を使う - 体感上 15.1.0 以上なら preboot しなく ても問題ないパフォーマンス
- 多分クラウドの macOS はサーバーラックに物理筐体が並んでいるので、 マシン毎の物理 IP もマシン毎に固定されるはず - よっておそらく Intel
のマシン群で使われる IP と m1 のマシン群で使われる IP は別 事例: m1 だと IP 制限かかったリソースにアクセス出来ん 対応: IP 許可見直す - 単純に IP 許可が漏れているだけと想定されるので設定見直す
事例: AWS S3 へのアクセスが遅くなる、終わらん https://support.circleci.com/hc/en-us/articles/19334402064027-Troubleshooting-slow-uploads-to-S3-for-jobs-using-an-m1-macOS-resource-class
色々あるけど粛々やろう