Tadashi Nemoto
Published on

CircleCI M1 Mac パフォーマンス比較

Authors

CircleCI M1 Mac comparison

この記事では、CircleCI でリリースされた M1 Mac リソースクラスのパフォーマンス比較を紹介します。

CI/CD パイプラインが M1 に対応し Apple Silicon でのビルドが可能に | CircleCI


対象アプリケーション

GitHub - tadashi0713/circleci-duckduckgo-ios: CircleCI Demo of DuckDuckGo iOS Application

このレポジトリは以下の DuckDuckGo iOS アプリ(ブラウザーアプリ)を Fork して作成しました。

GitHub - duckduckgo/iOS: DuckDuckGo iOS Application

  • unit_test(ユニットテストの実行)
  • integration_test(インテグレーションテスト/UI テストの実行)
  • build(署名なしビルドの実行)

設定ファイル(.circleci/config.yml)は下記です

version: 2.1

orbs:
  ruby: circleci/ruby@2.0.0
  macos: circleci/macos@2.3.4

executors:
  gen2_medium:
    macos:
      xcode: 14.2.0
    resource_class: macos.x86.medium.gen2
  m1_large:
    macos:
      xcode: 14.2.0
    resource_class: macos.m1.large.gen1

jobs:
  unit_test:
    parameters:
      executor:
        type: executor
    executor: << parameters.executor >>
    steps:
      - macos/preboot-simulator:
          device: iPhone 14
          version: '16.2'
      - checkout
      - run: git submodule update --init --recursive
      - ruby/install-deps
      - run: bundle exec fastlane unit_tests
      - store_test_results:
          path: fastlane/report.xml

  integration_test:
    parameters:
      executor:
        type: executor
    executor: << parameters.executor >>
    steps:
      - macos/preboot-simulator:
          device: iPhone 14
          version: '16.2'
      - checkout
      - run: git submodule update --init --recursive
      - ruby/install-deps
      - run: bundle exec fastlane integration_tests
      - run: bundle exec fastlane atb_uitests
      - store_test_results:
          path: fastlane/report.xml

  build:
    parameters:
      executor:
        type: executor
    executor: << parameters.executor >>
    steps:
      - checkout
      - run: git submodule update --init --recursive
      - ruby/install-deps
      - run: bundle exec fastlane build

workflows:
  m1_large_workflow:
    jobs:
      - unit_test:
          executor: m1_large
      - integration_test:
          executor: m1_large
      - build:
          executor: m1_large

  gen2_medium_workflow:
    jobs:
      - unit_test:
          executor: gen2_medium
      - integration_test:
          executor: gen2_medium
      - build:
          executor: gen2_medium

Medium Gen 2

  • Intel プロセッサー
  • 4 CPU @ 3.2 GHZ
  • 8 GB RAM

ワークフロー実行時間

Gen2 Workflow

CPU/RAM 使用率

Gen2 CPU RAM Usage

M1 Large

  • Apple silicon
  • 8CPU
  • 12GB RAM

ワークフロー実行時間

M1 Workflow

CPU/RAM 使用率

M1 CPU RAM Usage