Shashikant86.XcodeServer
Xcode 服务器:iOS 持续集成的 Ansible 配置
=========
这个角色可以用于在 macOS 上设置 iOS 持续集成服务,也就是苹果自己的 CI 服务器——Xcode 服务器。该角色还可以用于为 iOS 开发者设置本地开发环境,提供了 iOS 开发所需的所有工具,例如 Xcode、Swift Fastlane、Carthage、Cocoapods 以及大量的 Homebrew 包,同时你可以用变量完全控制自己的环境配置。Xcode 的安装需要预先下载的 XIP 文件。
要求
- macOS High Sierra
- Xcode 9 及以上版本
Xcode 9 之前的版本不支持该角色。
Xcode 安装要求
这个角色有几种方式可以安装 Xcode,你可以选择适合自己的方式:
- 在 playbook 的
files
目录中放置 Xcode XIP 文件
你应该把 xip
文件放在 playbook 的 files/
目录中,或者放在 $HOME 目录下 ~/Xcode_9.1.xip
。请指定 xcode_src
变量,设置你想要安装的 Xcode 版本。
xcode_src: Xcode_9.1.xip
这个角色包含的内容:
该角色包含以下软件包,用于配置 iOS 持续集成服务器:
- Xcode 9 及以上版本的安装
- Xcode 服务器服务
- macOS 默认设置:控制默认值和软件更新
- Homebrew:用于在 macOS 上安装包(如 Carthage 或 Cask 应用程序, 可选)
- RVM 和自定义 Ruby 版本,预安装 Gems(如 bundler、Fastlane、Cocoapods、Xcpretty, 可选)
你可以自定义自己的 playbook 来覆盖默认设置,创建自己的配置。
角色变量:
这个角色包含很多变量,可以用来配置你的 playbook。请参考 defaults/main.yml
获取所有变量列表。你可以覆盖 defaults/main.yml
的变量来配置自己的设置。你需要更改的主要变量有:
xcode_src: Xcode_{你的版本}.xip
xcode_server_user: {你的Xcode服务器用户名}
ansible_ssh_user: {你的Ansible SSH 用户名}
如何使用该角色:
想象一下,你有一台新安装的 Mac。你可以通过创建该角色的 Playbook 来为在 CI 中设置所有的 Xcode 服务器。你可以根据需要设置配置变量。
假设你已经安装了 Ansible,可以通过运行以下命令下载该角色:
$ ansible-galaxy install Shashikant86.XcodeServer
现在,我们需要通过设置变量创建自己的 playbook。我们可以使用 defaults/main.yml
文件 这里。示例 Playbook 如下:
示例 Playbook
创建一个名为 XcodeServer
的新目录,同时在其中创建 XcodeServer/files
目录,并把 Xcode XIP 文件放入 files
目录。
$ mkdir xcode_server
$ mkdir XcodeServer/files
$ touch xcs_playbook.yml
在 XcodeServer
目录中创建 xcs_playbook.yml
文件,内容如下,以便本地运行 playbook。你可以将 localhost
替换为其他主机。
---
- hosts: localhost
connection: local
vars:
clean_xcode: yes
clean_rvm: yes
clean_homebrew: yes
configure_xcode: yes
configure_xcodeserver: yes
configure_macos_defaults: yes
configure_ruby_rvm: yes
configure_homebrew: yes
xcode_src: Xcode_9.1.xip
xcode_server_user: shashi
ansible_ssh_user: shashi
ruby_version: 2.4.0
rubygems_packages_to_install:
- bundler
- xcpretty
macos_sleep_options:
- systemsetup -setsleep Never
- systemsetup -setharddisksleep Never
- systemsetup -setcomputersleep Never
macos_animation_options:
- defaults write NSGlobalDomain NSAutomaticWindowAnimationsEnabled -bool false
- defaults write NSGlobalDomain NSWindowResizeTime -float 0.001
- defaults write com.apple.dock expose-animation-duration -int 0
- defaults write com.apple.dock launchanim -bool false
macos_software_autoupdates:
- softwareupdate --schedule off
homebrew_use_brewfile: true
homebrew_brewfile_dir: '~'
homebrew_repo: https://github.com/Homebrew/brew
homebrew_prefix: /usr/local
homebrew_install_path: "{{ homebrew_prefix }}/Homebrew"
homebrew_brew_bin_path: /usr/local/bin
homebrew_upgrade_all_packages: no
homebrew_installed_packages:
- autoconf
- bash-completion
- git
- carthage
- gpg
- boost
- cmake
- ssh-copy-id
- openssl
- wget
- curl
homebrew_taps:
- homebrew/core
- caskroom/cask
- homebrew/binary
- homebrew/dupes
- homebrew/versions
homebrew_cask_apps:
- postman
roles:
- Shashikant86.XcodeServer
将 ansible_ssh_user
和 xcode_server_user
更改为你的用户名,并根据需要设置其他变量。现在执行这个 playbook:
$ ansible-playbook xcs_playbook.yml
观看你的 Mac Mini 服务器设置为 iOS 持续集成。
与 Travis 设置持续集成
我们可以通过禁用 Xcode 配置在 TravisCI 上测试该角色,因为 TravisCI 有自己的 Xcode 镜像。我们可以在 TravisCI 上测试其他所有内容。你可以在 .travis.yml
中查看 TravisCI 配置,以及在 tests
目录中的 playbook/config。可以查看 TravisCI 输出 这里。
依赖
无
许可证
MIT
作者信息
Shashikant Jagtap
ansible-galaxy install Shashikant86.XcodeServer