Shashikant86.iOS-Dev
iOS 开发与持续集成的 Ansible 配置
此角色可用于在 macOS 上设置 iOS 持续集成服务。该角色还可用于为 iOS 开发者设置本地开发环境。它包含了 iOS 开发者所需的所有工具,如 Xcode、Swift Fastlane、Carthage 和 Cocoapods,及许多 Homebrew 包,您可以通过变量全面控制配置自己的环境。Xcode 的安装需要预先下载的 XIP 文件,但模拟器和命令行工具的安装已由该角色自动化完成。此角色已在以下环境中经过全面测试:
- macOS Sierra
- Xcode 8.0.2
- Xcode 8.3 beta xip
从 Xcode 8 开始支持 xip
格式,因此此角色应适用于 Xcode 8 及更高版本。
要求
使用 pip 安装 Ansible Ansible 是一个 Python 库,因此我们可以使用 pip 进行安装。
$ easy_install pip $ pip install ansible
Xcode 安装要求
此角色有几种方法可以安装 Xcode,您可以选择适合您的方法:
- 在 playbook 的
files
目录中放置 Xcode 的 XIP/DMG 文件
您需要将一个 dmg
或 xip
文件放在 playbook 的 files/
目录中,以便该角色能够识别并传输。您必须将变量 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 开发者门户的身份验证。
- 使用 MAS CLI 从 Apple App Store 下载 Xcode
此方法需要您的 Apple 开发者 ID 和密码放入 config/variables 文件中。这将从 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,但建议使用第一种方法“在 playbook 的 files
目录中放置 Xcode XIP/DMG 文件”。
此角色包含的内容:
此角色提供了以下软件包,用于配置 iOS 持续集成服务器。
- Xcode 安装
- Swiftenv:Swift 的版本管理工具
- iOS 依赖管理工具,如 Carthage、Cocoapods 和 Swift 包管理器
- iOS 持续交付工具,即 Fastlane 工具
- macOS 默认设置:控制默认设置和软件更新
- Homebrew:macOS 的包管理器
- Homebrew 包,如 git、carthage、swiftlint、mas、cmake、RVM、curl、wget 等等
- Homebrew Cask 包
- RVM 和自定义 Ruby 版本
- 预安装的 Gems,如 bundler、Fastlane、Cocoapods、Xcpretty
- Xcode 8
- 安装 Xcode 的命令行工具
- 安装 Xcode 模拟器(9.2,但您可以随时更改)
您可以自定义自己的 playbook 以覆盖默认设置并创建自己的 playbook。
角色变量:
此角色有许多变量可用于配置您的 playbook。请查看 defaults/main.yml
以获取所有变量的列表。您可以重写 defaults/main.yml
变量以配置自己的内容。主要变量包括:
与 Xcode 相关的变量
configure_xcode_documents_dir
通过将其设置为no
,您可以跳过 Xcode 配置,此时不会安装 Xcode、Xcode 命令行工具和模拟器。您可以通过将 Xcode XIP 放在~/Documents/
目录中并将变量设置为yes
来启用 Xcode 安装。configure_xcode_playbook_files
您可以在 playbook 的files
目录中放置 Xcode XIP/DMG,并使用下面提到的变量来安装 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_sleep_options
、macos_animation_options
和 macos_software_autoupdates
中,来开启或关闭 macOS 默认设置,例如:
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 的 tap。
如何使用此角色:
想象一下,您有一台全新安装 macOS 的 Mac。您可以通过为此角色创建 playbook 来设置您的 iOS 开发环境。您可以根据需要设置配置变量。
假设您已安装 Ansible,我们可以通过运行以下命令下载此角色:
$ ansible-galaxy install Shashikant86.iOS-Dev
现在,我们需要为此角色创建自己的 playbook,并设置变量,您可以在 这里 找到 defaults/main.yml
文件。示例 playbook 如下:
示例 Playbook
我们可以创建一个 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
请参考 tests
目录中的 playbook/config 作为示例。
如果您想将变量保留在 playbook 文件之外,可以创建 config.yml
并在 playbook 文件中调用它。
设置 Travis 连续集成
我们可以在 TravisCI 上测试此角色,关闭 Xcode 配置,因为 TravisCI 有自己的 Xcode 镜像。我们可以在 TravisCI 测试所有其他功能。您可以在 .travis.yml
和 tests
目录中的 playbook/config 查看 TravisCI 配置。您可以在 这里 查看 TravisCI 输出。
依赖
无
许可证
MIT
作者信息
Shashikant Jagtap
ansible-galaxy install Shashikant86.iOS-Dev