Shashikant86.iOS-Dev
iOS開発および継続的インテグレーションのためのAnsibleプロビジョニング
この役割は、macOS上でiOS継続的インテグレーションサービスを設定するために使用できます。また、iOS開発者のためのローカル開発環境を設定するためにも利用できます。必要なツール(Xcode、Swift Fastlane、Carthage、Cocoapods、さまざまなHomebrewパッケージなど)が全て揃っていますが、変数を使って自分の環境を自由に設定することが可能です。Xcodeのインストールには事前にダウンロードされたXIPファイルが必要ですが、シミュレーターやコマンドラインツールのインストールはこの役割によって自動化されています。この役割は以下の環境で完全にテストされています。
- macOS Sierra
- Xcode 8.0.2
- Xcode 8.3ベータxip
これはXcode 8以降で動作するはずです。xip
フォーマットはXcode 8以降からサポートされています。
要件
- pipを使ってAnsibleをインストール AnsibleはPythonライブラリなので、pipを使ってインストールできます。
$ easy_install pip
$ pip install ansible
Xcodeセットアップの要件
この役割では、Xcodeをインストールするためのいくつかの方法があります。自分に合った方法を選択できます。
- プレイブックの
files
ディレクトリにXcode XIP/DMGを置く
この役割がそれを取得して転送できるようにするためには、files/
ディレクトリにdmg
またはxip
を置く必要があります。このモードを有効にするには、変数configure_xcode_playbook_files
をyes
に設定します。使用できる変数はいくつかあります。xcode_major_version
を使って、使用するXcodeの正確なバージョンを指定し、xcode_src
にXcode DMG/XIPのファイル名を指定して、他のマシンにコピーすることができます。例は次のようになります:
configure_xcode_playbook_files: yes
xcode_major_version: 8.2
xcode_src: Xcode_8.2.xip
これにより、特定のバージョンをインストールでき(CIの安定性に適しています)、役割がApple Developer Portalでの認証を扱う必要がなくなります。
- MAS CLIを使用してApple App StoreからXcodeをダウンロード
この方法では、Apple Developer IDとパスワードを設定する必要があります。これにより、macOSのApple StoreからXcodeがダウンロードされますが、時間がかかります。設定する変数は以下の通りです。ここに自分のapp_idと資格情報を入力できます!!
use_mac_store: yes
mas_email: ""
mas_password: ""
mas_installed_apps:
- { id: 497799835, name: "Xcode (8.1)" }
mas_upgrade_all_apps: no
Xcodeをインストールするために上記のいずれかの方法を選択できますが、最初の方法「プレイブックのfiles
ディレクトリにXcode XIP/DMGを置く」を使用することをお勧めします。
この役割に含まれるもの:
この役割には、iOS継続的インテグレーションサーバーをプロビジョニングするための以下のソフトウェアパッケージが含まれています。
- Xcodeインストール
- Swiftenv:Swift用のバージョン管理ツール
- Carthage、Cocoapods、Swift Package ManagerなどのiOS依存関係管理ツール
- FastlaneなどのiOS継続的デリバリーツール
- macOSのデフォルト設定:デフォルトおよびソフトウェアアップデートの制御
- Homebrew:macOS用のパッケージ管理ツール
- git、carthage、swiftlint、mas、cmake、RVM、curl、wgetなどのHomebrewパッケージ
- Homebrew Caskパッケージ
- RVMおよびカスタマイズされたRubyバージョン
- bundler、Fastlane、Cocoapods、Xcprettyなどのプリインストール済みGem
- Xcode 8
- Xcodeのコマンドラインツールをインストール
- Xcodeシミュレーター(9.2ですが、変更可能)
自分のデフォルトをオーバーライドして、自分自身のプレイブックを作成することができます。
役割変数:
この役割には、自分のプレイブックを構成するために使用できる多くの変数があります。すべての変数のリストについてはdefaults/main.yml
を参照してください。自分の設定に合わせてdefaults/main.yml
の変数をオーバーライドできます。主要な変数は次のとおりです:
Xcode関連の変数
configure_xcode_documents_dir
これをno
に設定することでXcodeの構成をスキップできます。そうすると、Xcode、Xcodeコマンドラインツール、シミュレーターはインストールされません。Xcodeインストールを有効にするには、Xcode XIPを~/Documents/
ディレクトリに置き、変数をyes
に設定します。configure_xcode_playbook_files
Xcode XIP/DMGをプレイブックのfiles
ディレクトリに置き、以下の変数を使用してXcodeをインストールします。
configure_xcode_playbook_files: yes
xcode_major_version: 8.2
xcode_src: Xcode_8.2.xip
- Mac App StoreおよびMAS CLIを使用したXcode Mac App StoreからXcodeを取得できますが、Appleの開発者資格情報が必要ですので注意してください!設定すべき変数は次のとおりです。
use_mac_store: yes
mas_email: ""
mas_password: ""
mas_installed_apps:
- { id: 497799835, name: "Xcode (8.1)" }
mas_upgrade_all_apps: no
カスタムSwiftおよびRubyバージョン管理変数
configure_custom_swift
Xcode 8にはデフォルトのSwiftがありますが、異なるSwiftツールチェインを使用することもできます。これをyes
に設定し、swift_version_custom
変数で必要なSwiftバージョン(例:3.0.1
)を設定してください。configure_ruby_rvm
macOSにはデフォルトでRuby2.0.0
が付属していますが、システムRubyを使ってRubygemsを管理するのは難しいです。configure_ruby_rvm
変数をyes
に設定し、ruby-version
値を希望するRubyのバージョン(例:2.4.0
)に設定することで、RVMのようなバージョン管理ツールを利用できます。
macOSのデフォルトおよびソフトウェアアップデート関連の変数
macOSのデフォルト設定は、macos_sleep_options
、macos_animation_options
、macos_software_autoupdates
変数にコマンドを入れることでONまたはOFFにできます。例:
macos_sleep_options:
- systemsetup -setsleep Never
- systemsetup -setharddisksleep Never
Homebrew関連の変数
homebrew_install_path
を使ってHomebrewのインストール先をカスタマイズしたり、homebrew_installed_packages
を使ってパッケージのリスト、homebrew_cask_apps
を使ってHomebrew Caskアプリケーションのリストを設定したりできます。また、homebrew_taps
変数を使ってHomebrewタップをリストすることもできます。
この役割の使い方:
新しいMacに新しいmacOSをインストールしたと仮定します。この役割のためのプレイブックを作成することで、iOS開発環境をすべてセットアップできます。必要に応じて設定変数を設定できます。
Ansibleをインストール済みと仮定し、次のコマンドを実行して役割をダウンロードできます。
$ ansible-galaxy install Shashikant86.iOS-Dev
これで、変数を設定した自分のプレイブックを作成する必要があります。defaults/main.yml
ファイルをこちらから使用できます。例のプレイブックは次のようになります。
例のプレイブック
以下のようにplaybook.yml
を作成できます。
---
- hosts: localhost
connection: local
remote_user: root
vars:
configure_xcode: no
configure_custom_swift: yes
configure_macos_defaults: no
configure_ruby_rvm: yes
homebrew_upgrade_all_packages: no
use_mac_store: no
xcode_src: Xcode_8.2.1.xip
ruby_version: 2.4.0
rubygems_packages_to_install:
- bundler
- xcpretty
swift_version_custom: 3.0.1
homebrew_installed_packages:
- autoconf
- bash-completion
- git
- carthage
- gpg
- boost
- cmake
- ssh-copy-id
- openssl
- wget
- curl
- argon/mas/mas
- kylef/formulae/swiftenv
homebrew_taps:
- homebrew/core
- caskroom/cask
- homebrew/binary
- homebrew/dupes
- homebrew/versions
homebrew_cask_apps:
- java
roles:
- Shashikant86.iOS-Dev
テストディレクトリのplaybook/config
例を参照してください。
Travisでの継続的インテグレーションの設定
Xcodeの設定を無効にして、この役割をTravisCIでテストできます。TravisCIには独自のXcodeイメージがあります。他のすべてのことをTravisCIでテストできます。.travis.yml
でTravisCIの設定、tests
ディレクトリのプレイブック/設定を確認できます。TravisCIの出力はこちらで確認できます。
依存関係
なし
ライセンス
MIT
著者情報
Shashikant Jagtap
ansible-galaxy install Shashikant86.iOS-Dev