DigitalABOUTSERVICECASENEWSSPECIALISTRECRUITSPECIALIST多様な専門性を持つNRIデジタル社員のコラム、インタビューやインサイトをご紹介します。佑磨2020.12.23CI/CDAWSre:Invent2020MacインスタンスiOSアプリGitLabはじめまして。NRIデジタルの石井佑磨です。miniとNitroコントローラの組み合わせによって実現されたことが説明されました。これらは、みなさんも注目しているサービスではないでしょうか。MacインスタンスのユースケースMacインスタンスのユースケースとして、Xcodeを用いたiOSアプリの開発があります。Macインスタンスを用いたCI/CDを実装し、既存のCI/CD環境との比較を行いたいと思っているのですが、今回は第1弾として、CI環境の構築のみを行います!Macインスタンスでなにかやってみたいという方、iOS開発に使えないか検討している方に読んでいただけると幸いです!※本記事では、セキュリティやCI環境構築時の細かい操作などについては、他のブログなどで紹介されているため、説明しません。RunnerでCI構築を行います。そのため、AWSのサービスのみで構成されたアーキテクチャをつくるという記事ではないことをご認識お願いいたします。本記事において専有ホストを作成しますが、24時間は専有ホストをリリースできないので、24時間あたりの料金を見積りを行ってから作成してください。RunnerをインストールしてCI環境を構築します。AWSのサービスはVPCなどのネットワーク周りとMacインスタンスしか使わないので、とても簡単な構成となります。あと、事前準備としてGitLab、AppleIDのアカウント作成をしてください。IDはXcode使用時に使います。Viewer:vnc接続のためMacインスタンス作成1)https://aws.amazon.com/jp/blogs/news/new-use-mac-instances-to-build-test-macos-ios-ipados-tvos-and-watchos-apps/現在、Macインスタンスは数か所のリージョンでしか利用できず、また専有ホストでのみ利用可能であるため、今回はus-east-1で専有ホストを作成します。作成前にVPCなどは事前に用意しておいてください。以下の設定で専有ホストを作成しました。ホストの復旧を有効化すると、ホストを作成できないので注意してください。インスタンスファミリー:mac1インスタンスタイプ:mac1.metalアベイラビリティゾーン:us-east-1a数量:1できたら、EC2ダッシュボードからMacインスタンス作成します。64GB今回はXcodeをインストールして使うので、ESBはgp2を64GB割り当てていきます。サイズは適宜、調整してください。Macインスタンスへの接続と設定Macインスタンス作成後は、EC2作成時に発行された秘密鍵を用いてputty(SSH)で接続し、VNC接続設定を行います。設定が完了したら、VNCでログインできることを確認してください。ここではVNC設定の詳細は省略します。Viewerで接続後、作成したAppleIDでAppStoreにサインインをしてXcodeをダウンロードします。Xcodeのインストールが完了したら、Xcodeを起動し、プロジェクト作成からiOSアプリを作成します。iOSプロジェクトをGitLlabへpushしたいので、Xcodeのアカウント設定からGitLabアカウントを追加し、プロジェクトをpushします。RunnerをMacインスタンスにインストールします。RunnerのジョブがMacインスタンスで実行されるようにするために、公式サイトを参考に登録します。完了したら、iOSプロジェクトをビルドするための.gitlab-ci.ymlを作成し、GitLabのリポジトリにpushします。これで、GitLabにソースコードを変更してpushすると、Macインスタンスにソースコードが読み込まれてビルドされます。CI動作確認では、GitLabからCIの結果を確認しましょう。GitLabにサインイン後、左のメニューから「CI/CD」→「PipeLine」を選択することでCIの結果を確認することができます。SUCCEEDED」と表示されているのでアプリのビルドが成功しています。まとめ4)https://aws.amazon.com/jp/ec2/dedicated-hosts/pricing/#host-configurationMacインスタンスでのiOSアプリのビルド・CI環境構築ができました!料金面を考えると、us-east1での専有ホストが$1.083/1hなので、24時間起動していると約3000円かかります。CIを実行する頻度によっても月額は変わると思いますが、毎日ビルドすると9万円かかる計算になります。iOSの既存のCI環境に比べて、それだけのコストに見合うメリットがあるのかというのを次回以降に考察していきたいと思います。