Shashikant86.iOS-Dev

CIステータス

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_filesyesに設定します。使用できる変数はいくつかあります。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にはデフォルトでRuby 2.0.0が付属していますが、システムRubyを使ってRubygemsを管理するのは難しいです。configure_ruby_rvm変数をyesに設定し、ruby-version値を希望するRubyのバージョン(例:2.4.0)に設定することで、RVMのようなバージョン管理ツールを利用できます。

macOSのデフォルトおよびソフトウェアアップデート関連の変数

macOSのデフォルト設定は、macos_sleep_optionsmacos_animation_optionsmacos_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

プロジェクトについて

Fully automated and customised macOS setup for iOS development & CI

インストール
ansible-galaxy install Shashikant86.iOS-Dev
ライセンス
Unknown
ダウンロード
315
所有者
Mobile DevOps, CI/CD, Mobile Build & Test Automation. Swift, Kotlin, XCTest, XCUITest, Xcode Server, Apple Developer tools, Flutter, Ruby, PHP etc