Loading... Search articles

Search for articles

Sorry, but we couldn't find any matches...

But perhaps we can interest you in one of our more popular articles?
Codemagic vs CircleCI: In depth comparison of cloud-based CI/CD services

Codemagic vs CircleCI: 徹底比較

Sep 28, 2021

Written by Souvik Biswas

数多くあるCI/CDサービスの中から、1つのサービスを選ぶのはとても難しいことです。正しい決断をするには、様々な要素を考慮する必要があります。最終的には、最適な選択は、チームの好みや取り組んでいるプロジェクトの種類によっても異なります。

そのご判断を少しでもシンプルにするために、本記事では、お取り組みのプロジェクトに適したCI/CDを選択する際に、考慮すべきいくつかの重要な要素に基づいて、CodemagicCircleCI社のサービスを比較してみます。

なお、CircleCI社のサービスは主に*継続的インテグレーション(CI)のプラットフォームであり、継続的デリバリー継続的デプロイ(CD)*にはあまり重点を置いていないことにご留意ください。

概要

継続的インテグレーション(CI)と継続的デリバリー(CD)のサービスは、大きく2つのタイプに分類されます。

  1. クラウドベース
  2. セルフホスティング

CodemagicとCircleCI社はどちらも、クラウドベースのCI/CDサービスを提供しています。自社インフラを利用したい人向けに、CircleCI社ではセルフホスティングサービスを利用するオプションを用意しています。

CircleCIは一般的なCI/CDソリューションで、あらゆるタイプのプロジェクトの構築に使用できます。一方、**Codemagic**は、よりモバイルに重点を置いたCI/CDソリューションをご提供しており、コード署名やデプロイプロセスがより簡単になっております。これは、Android、iOS、Flutter、React Native、Cordova、Ionicなど、一般的なフレームワークのほとんどに対応しております。

オンボーディング

まず、両プラットフォームのオンボーディングプロセスを見てみましょう。

Codemagicのオンボーディング

Codemagicへのサインアップ(新規ご登録)は、GitHubBitbucketGitLabのいずれかのアカウントをご使用いただくか、メールで行っていただくことも可能です。Codemagicのサインアップページにアクセスして、ご開始いただけます。

Codemagicは、GitHubとの接続にはGitHubアプリ統合を、BitbucketGitLabアカウントとの接続にはOAuthを使用しております。

Codemagicのサインアッププロセスについての詳細はこちらをご覧いただくか、ぜひサインアップしてください:

サインアップ

認証プロセスの後、Codemagicアプリケーションのページに移動いたします。

Codemagicを複数のバージョンコントロールサービスに同時に接続することが可能で、アプリはすべて1つの場所、アプリケーションページに表示されます。

CircleCIのオンボーディング

CircleCIの利用を開始するには、まずサインアップページにアクセスします。

ここで、GitHubでサインアップまたはBitbucketでサインアップのいずれかでCircleCIを認証し、プロジェクトへのアクセスを許可します。GitHubを使用している場合、CircleCIではプライベートリポジトリへのアクセスを防ぐことができます。

認証プロセスが完了すると、CircleCIダッシュボードに移動します。

プロジェクトの追加

ビルドプロセスを開始する前に、ビルドしたいプロジェクトをCI/CDプラットフォームに追加する必要があります。ここで、両プラットフォームのプロジェクト追加プロセスをご紹介いたします。

Codemagicへのプロジェクトの追加

Codemagicのアプリケーション(Applications)ページには、アプリケーションの追加(Add application)ボタンがございます。そちらをクリックします。

Gitプロバイダーを選択するか、URLを使ってリポジトリを追加します。

追加したいリポジトリを選択し、プロジェクトタイプを選択します。

そうすると、先ほど追加されたリポジトリのプロジェクト設定ページが表示されます。

CircleCIへのプロジェクトの追加

プロジェクトをCircleCIに追加するには、ダッシュボードページのプロジェクトの追加ボタンをクリックするか(初めてプロジェクトを追加する場合)、画面左側のメニューからプロジェクトを選択して、プロジェクトページに移動する必要があります。

追加したいプロジェクトを検索して、「プロジェクトの設定」をクリックします。

ダイアログボックスが表示されます。もし、.circleci/config.ymlがすでにリポジトリにある場合は、ブランチ名を入力するだけです。そうでなければ、最初の config.yml ファイルを書き始めることができます。そして、「Let’s Go」をクリックします。

CircleCIビルド用のconfig.ymlファイルの定義方法を、次のセクションで見てみましょう。

これによりプロジェクトが追加され、そのプロジェクトの情報ページが表示されます。

ビルドの実行方法については、ビルドの実行セクションで詳しく説明しています。

ワークフローの構成

Codemagic:ワークフローの構成

Codemagicでは、‘codemagic.yaml’ ファイルを使用してビルドワークフローを構成できます。このファイルは、リポジトリのルートディレクトリに格納する必要があります。また、Flutterプロジェクトを扱っている場合、[ワークフローエディタ]を使ってワークフローを構成することもできます(https://docs.codemagic.io/flutter/flutter-projects/)。

codemagic.yamlファイルの詳細については、こちらをご覧ください。

ワークフローの構成を始めるには、プロジェクトの設定に進みます。Flutterプロジェクトであれば、デフォルトでワークフローエディタタブが選択されます。それ以外の場合は、codemagic.yamlタブが選択されます。

ワークフローエディタは、Codemagicウェブアプリ上で直接ビルドワークフローを定義し、カスタマイズできます。構成が完了したら、「変更を保存」をクリックして保存することをお忘れにならないでください。

codemagic.yamlを使うには、このファイルをプロジェクトのルートディレクトリに置き、バージョンコントロールサーバーにコミットします。ここで、codemagic.yamlタブに移動すると、YAMLファイルの内容が表示されます。

ここでは、Androidプラットフォームのみを対象としたFlutterプロジェクトをビルドしてテストし、ビルド成果物を生成するためのcodemagic.yamlファイルの例を示します。

workflows:
  default-workflow:
    name: Default Workflow
    max_build_duration: 60
    environment:
      flutter: stable
    scripts:
      - name: Get Flutter packages
        script: flutter packages pub get
      - name: Flutter test
        script: flutter test
      - name: Build Android
        script: flutter build appbundle --debug
    artifacts:
      - build/**/outputs/bundle/**/*.aab
    publishing:
      email:
        recipients:
          - sbis1999@gmail.com

CircleCI:ワークフローの構成

CircleCIのビルドパイプラインの構成は、.circleci/config.ymlファイルを使用します。このフォルダは、プロジェクトのルートディレクトリに格納する必要があります。ローカルでconfig.ymlファイルを編集するか、CircleCIウェブアプリにあるエディタを使って編集することができます。

新しいプロジェクトを設定する際に、config.ymlファイルが含まれていない場合は、エディタが表示されます。そこで、様々なテンプレートから選択したり、修正できます。テンプレートの修正が完了したら、「コミットして実行」をクリックします。これにより、ファイルが新しいブランチにコミットされ、最初のビルドが開始されます。

すでにプロジェクトが設定されている場合は、プロジェクトページにアクセスして、config.ymlファイルを編集することができます。構成ファイルのあるブランチを選択して、「構成の編集」をクリックします。これにより、CircleCIウェブアプリのエディタに移動します。

ここでは、Androidプラットフォームのみを対象としたFlutterプロジェクトをビルドしてテストし、ビルド成果物を生成するための.circleci/config.ymlファイルの例を示します。

version: 2.1
executors:
  flutter:
    docker:
      - image: cirrusci/flutter
jobs:
  test:
    executor: flutter
    steps:
      - checkout
      - run:
          name: Get Flutter packages
          command: flutter packages pub get
      - run:
          name: Flutter test
          command: flutter test
  build: 
    executor: flutter
    steps: 
      - checkout
      - run:
          name: Build Android
          command: flutter build appbundle --debug
      - store_artifacts:
          path: build/app/outputs/bundle/debug
workflows:
  version: 2
  flutter-build:
    jobs:
      - test
      - build:
          requires:
            - test

CircleCIでは、Orbという興味深いコンセプトを提供しています。Orbは基本的に再利用可能な、あらかじめ書かれた構成要素のことで、たった1行のコードで使用することができます。

ビルドプラットフォーム

Codemagic対応プラットフォーム

Codemagicは、ビルドパイプラインを実行するためのmacOSおよびLinux用のVM(仮想マシン)をご提供しております。Windowsマシンへの対応は、Codemagicで近日中に予定されております。

Codemagicがご提供するビルドマシンの種類については、こちらをご覧ください。

Linuxマシンは、課金を有効にされているチームとユーザーのお客様のみご利用いただけます。

CircleCI対応プラットフォーム

CircleCIではワークフローを定義する際に、ビルドのエクゼキュータタイプを選択することができます。CircleCIでは主に、macOSLinuxWindowsのVMを提供しています。

CircleCIのmacOSマシンは、有料プランの一部です。CircleCI社の各プランについては、後のセクションで詳しく説明いたします。

デプロイ

ビルド成果物のコード署名は、アプリストアで公開する前に完了しなければならない重要なステップです。これらのプラットフォームが、コード署名や成果物のデプロイをどのように処理するのかを見てみましょう。

Codemagic:デプロイ

Codemagicは、コード署名付きのビルド成果物をプラットフォーム上でネイティブに生成するための直接的なサポートをご提供いたします。

Flutterプロジェクトでは、ワークフローエディタcodemagic.yamlファイルを使ってコード署名し、ビルド成果物をGoogle Play StoreApple App StoreFirebase App Distributionにデプロイできます。

それ以外のプロジェクトでは、codemagic.yamlファイルを使ってデプロイを構成する必要があります。

以下のリンクから、コード署名と公開についての説明をご覧いただけます。

CircleCI:デプロイ

継続的インテグレーション(CI)ツールであるCircleCIは、プラットフォーム上でコード署名やデプロイを直接サポートしていません。一方で、デプロイを支援するいくつかのサードパーティツールとの統合を提供しており、推奨されているのがfastlaneです。

リモートアクセス

ビルドマシンへのリモートアクセスは、プラットフォーム上で実行中のビルドをデバッグするのに役立ちます。CodemagicCircleCIはどちらもビルドシステムへのリモートアクセスが可能です。

Codemagicでは、SSHVNCクライアントを使用してビルドマシンにリモートアクセスすることができます。ビルドの実行中に、プロジェクトのビルドページに移動します。そこで、リモートアクセスの認証情報を含むタブが表示されます。

Codemagicのリモートアクセスについての詳細はこちらをご覧ください。

CircleCIには、通常のビルドに対するSSHアクセスは含まれません。SSHアクセスを取得するには、ダッシュボードの「ワークフローの再実行」ドロップダウンメニューから「SSHでジョブを再実行」オプションを選択する必要があります。

インテグレーション

Codemagic

Codemagicは、プラットフォーム上でご使用いただけるインテグレーションが驚くほど充実しております。これらは、通常のCLIコマンドとして、scriptsセクションの下にあるcodemagic.yamlファイルに簡単に追加することができます。

以下は、codemagic.yamlファイルにCodecov統合を追加した例です。

- name: Coverage Test
  script: |
    #!/bin/bash
    flutter test --coverage
    bash <(curl -s https://codecov.io/bash) -t $CODECOV_TOKEN    

Codemagic統合を見る.

CircleCI

一般的なCIプラットフォームであるCircleCIには、様々なサービスとの統合が数多くあります。それらの統合は、.circleci/config.ymlファイルに追加できるOrbの形でアクセスできます。

以下は、config.ymlファイルにCodecov orbを追加した例です:

version: '2.1'
orbs:
  codecov: codecov/codecov@1.2.4
workflows:
  upload-to-codecov:
    jobs:
      - checkout
      - codecov/upload

価格

この2つのプラットフォームが提供する料金プランを見てみましょう。 この2つのプラットフォームの違いの1つは、CircleCIの有料プランはプリペイド(前払い)で、Codemagicの有料プランはポストペイド(後払い)である点です。

Codemagicの価格

Codemagicは無料で開始でき、その後は**従量課金(pay-as-you-go)**プラン(後払い)をお選びいただけます。

Codemagicの無料プランでは、以下の各種機能をご提供しております:

  • 毎月500分のビルド時間
  • 120分のビルドタイムアウト
  • 1つのコンカレントビルド
  • 1人のメンバー
  • ビルドプラットフォーム:
    • macOS標準VM (2.3 GHz Quad Core/8 GB)

コンカレント(同時)ビルド数やチームメンバー数は、従量制プランをご選択いただくことで増やすことができます。

Codemagicは、大規模なチームを有する法人の皆様用に月額プランをご用意しております。

Codemagicの価格オプションについてはこちらをご覧ください。

CircleCIの価格

CircleCI無料プランで開始できます。クラウドホストのCI/CDサービスでは、さらに2つのプラン(前払い)、パフォーマンススケールを提供しています。また、CircleCIでは、自社のインフラでCI/CDサービスを運用する、セルフホスティングソリューションも提供しています。

CircleCIの無料プランでは、以下の機能を提供しています:

  • 2500無料クレジット/週
  • 1つのコンカレントビルド
  • 1人のメンバー
  • ビルドプラットフォーム:
    • Linux VM (Dual Core/7.5 GB) -10クレジット/分
    • Windows VM (Quad Core/15 GB)-40クレジット/分

APIアクセス

APIにアクセスすることで、有用なビルド情報の取得、プロジェクトの管理、プラットフォームでのビルドの実行/停止などが、APIコールだけで可能になります。また、CI/CDプラットフォームを他のツールと簡単に統合することができます。

どちらのプラットフォームもAPIアクセスが可能です。それぞれのAPIについては、以下のリンクから詳細をご覧いただけます:

結論

Codemagicは、モバイルに重点を置いた継続的インテグレーション(CI)および継続的デプロイ(CD)プラットフォームであるため、コード署名やビルド成果物の公開という点で、CircleCIよりも優れております。Codemagicは、Google Play StoreやApple App Storeなどの主要なプラットフォームへのデプロイをネイティブ対応しております。Codemagicのもう一つの特長は、macOSビルドプラットフォームを無料プランの一部としてご提供している点で、お使いいただくとiOSとmacOSアプリを簡単にコード署名して公開することができます。Mac ProのPremium VMは有料機能で、[従量課金](Pay as you go)(https://codemagic.io/pricing/)プランでご利用いただけます。

参照


Souvik Biswasは、情熱的なモバイルアプリ開発者です(AndroidとFlutter)。彼はこれまでの歩みの中で、数多くのモバイルアプリを手がけてまいりました。GitHubでのオープンソース貢献が大好きです。彼は現在、Indian Institute of Information Technology Kalyaniでコンピューターサイエンスとエンジニアリングの技術学士号の取得を目指しています。また、Medium-FlutterコミュニティでFlutterの記事を書いております。

Latest articles

Show more posts