2023年4月29日
Continuous Integration
CIパイプラインでApple M1のサポートが利用可能になりました。Appleプラットフォームアプリの開発を、Harness Cloudを使ってApple Silicon M1マシン上に環境構築することで、最適化する方法を学びます。
Harness Continuous Integration (CI) モジュールでのApple Silicon M1 サポートを発表できることをうれしく思います。これにより、より高速で効率的な iOS ビルド パイプラインが可能になります。
Appleは、2020年にM1チップを導入したとき、Mac デバイスのハードウェアアーキテクチャーに大きな変化をもたらしました。M1チップは、特に処理速度、電力効率、グラフィックス性能、機械学習などの分野でAppleの以前のIntelプロセッサーよりも性能が大幅に向上しています。iOS開発者にとって、より迅速で効率的なアプリ開発の可能性がかつてないほど大きくなり、モバイルチームは M1を使うことでビルド時間が短縮されることを、既に確認しています。
Harnessは、CI/CDにおける速度と効率の重要性を認識しています。このニーズを満たすために、M1マシンをシステムに組み込み、お客様がM1マシンの優れたパフォーマンスを活用できるようにしました。この強力なハードウェアをHarness Cloudインフラ(当社のフルマネージドクラウドサービス)と組み合わせることで、開発者はワークフローを最適化し、ビルド時間をこれまでにないほど短縮できます。
このブログでは、CI/CDパイプラインでM1マシンを使う方法、当社のクラウドM1マシンで実行するパイプラインの構成、デモプロジェクトを使ってmacOSアプリを構築する方法を探ります。ワークフローを最適化したいiOS開発者、CI/CDパイプラインにM1マシンを活用する方法に興味がある方は、ぜひこのブログをご一読ください。
当社のCloud M1マシンでCIステージの実行を設定するには、ステージの「platform」プロパティを、「ARM64」アーキテクチャーを使うmacOS上で実行するように設定するだけです。例:
stages:
- stage:
name: build
identifier: build
type: CI
spec:
cloneCodebase: true
platform:
os: MacOS // selects macOS operating system
arch: Arm64 //selects M1 architecture
runtime:
type: Cloud
spec: {}
execution:
steps:
…
iOS開発者は、アプリをビルドするために特定のxcodeバージョンを選択する必要があるかもしれません。Harness Cloudを使う場合、マシンには複数のxcodeバージョンを含む、すぐに活用できるソフトウェアがプリインストールされています。次のコマンドを使用して、マシンで使用可能なXcodeバージョンを選択できます。
sudo xcode-select -switch /Applications/Xcode_[version].app
例えば次の手順では、マシンのデフォルトバージョンではなく、xcodeバージョン13.4.1を使うようにマシンを設定します。
- step:
type: Run
name: set xcode version
identifier: set_xcode_version
spec:
shell: Sh
command: |
sudo xcode-select -switch /Applications/Xcode_13.4.1.app
xcodebuild -version // verify selected version
Intelベースのアーキテクチャーを使わなければいけない場合は?
iOS 開発者として、Apple Siliconでまだネイティブに動作するよう更新されていないアプリやツールを扱う場合は、Rosettaの使用が求められる場合があります。Rosettaは、IntelとAppleのシリコンプロセッサー間の互換性を埋めるためにAppleが開発した技術です。これにより、x86_64命令を含むアプリをApple Siliconマシンで実行できるようになります。
Rosettaは、Harness Cloud M1マシンにデフォルトでインストールされ、有効になっています。これを使うには、スクリプトで実行する各コマンドの前に「arch -x86_64」プレフィックスを追加します。これにより、システムはx86_64命令を使用するようになります。
RosettaはiOS開発者にとって貴重なツールですが、Rosettaを通してアプリを実行すると、パフォーマンスに影響を与える可能性があることに注意が重要です。従って、最適なパフォーマンスを確保するために、可能な限りApple Siliconのネイティブアプリを使用することが推奨されます。
次のようなパイプラインが作成されます。
pipeline:
name: Build MacOS demo
identifier: Build_macos_demo
projectIdentifier: default_project
orgIdentifier: default
stages:
- stage:
name: build
identifier: build
type: CI
spec:
cloneCodebase: true
platform:
os: MacOS // selects macOS operating system
arch: Arm64 //selects M1 architecture
runtime:
type: Cloud
spec: {}
execution:
steps:
- step:
type: Run
name: Run xcodebuild
identifier: Run_xcodebuild
spec:
shell: Sh
command: xcodebuild
Apple Silicon M1マシンをCI/CDパイプラインに組み込むと、ビルド時間が短縮され、アプリ開発がより効率的になります。Harness Cloudインフラにより、M1マシン利用がこれまでになく簡単になりました。このブログが、ワークフローを最適化し、Apple Silicon M1マシンが提供する優れたパフォーマンス活用のために必要なツールを提供する上で、お役に立てたら幸いです。
Harness CI/CDを使い始めてみませんか?今すぐ無料トライアルにサインアップしてください!
この記事はHarness社のウェブサイトで公開されているものをDigital Stacksが日本語に訳したものです。無断複製を禁じます。原文はこちらです。