2023年4月29日

Continuous Integration

Apple M1とHarnessでiOSとMacOSのビルドパイプラインを加速

CIパイプラインでApple M1のサポートが利用可能になりました。Appleプラットフォームアプリの開発を、Harness Cloudを使ってApple Silicon M1マシン上に環境構築することで、最適化する方法を学びます。
Apple M1.pngHarness 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マシンを活用する方法に興味がある方は、ぜひこのブログをご一読ください。

 

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のネイティブアプリを使用することが推奨されます。
 

自分で試してみてください

  • サンプルリポジトリーhttps://github.com/CIsamples/macos_demoをアカウントにフォークします。
  • 無料アカウントにサインアップまたは既存のアカウントにログイン)。
  • Harness CIのGet Startedウィザードに従います。
  • Source Code Managerへの接続を構成します。
  • Source Control Managerを選ぶように求められたら、「GitHub」を選び、Harness CIがGitHubアカウントに接続するための認証方法としてOAuth、もしくはAccess Tokenを使います。
  • リポジトリーを選ぶように求められたら、前の手順でフォークしたリポジトリーを選び、Configure Pipelineを選びますす。
  • 「Create empty pipeline configuration」を選び、Create Pipelineを選びます
  • これらの手順を実行すると、フォークされたリポジトリーのクローンを作成し、ウェルカムメッセージを出力する基本的な「hello world」パイプラインが作成されます。
  • ビルドインフラとしてMacOSを選びます。
  • echoコマンドをxcodebuildに置き換えます。

次のようなパイプラインが作成されます。

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

M1とHarnessを使ってみる

Apple Silicon M1マシンをCI/CDパイプラインに組み込むと、ビルド時間が短縮され、アプリ開発がより効率的になります。Harness Cloudインフラにより、M1マシン利用がこれまでになく簡単になりました。このブログが、ワークフローを最適化し、Apple Silicon M1マシンが提供する優れたパフォーマンス活用のために必要なツールを提供する上で、お役に立てたら幸いです。

Harness CI/CDを使い始めてみませんか?今すぐ無料トライアルにサインアップしてください


この記事はHarness社のウェブサイトで公開されているものをDigital Stacksが日本語に訳したものです。無断複製を禁じます。原文はこちらです

Harnessに関するお問い合わせはお気軽にお寄せください。

お問い合わせ