Shashikant86.iOS-Dev

CI 状态

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 文件

您需要将一个 dmgxip 文件放在 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 附带默认 Ruby 2.0.0,但使用系统 Ruby 管理 Rubygems 比较困难。我们可以通过将 configure_ruby_rvm 变量设置为 yes 并将 ruby-version 值设置为我们想要的 Ruby 版本,例如 2.4.0 来使用版本管理工具如 RVM。

macOS 默认和软件更新相关变量

您可以通过将命令放入变量 macos_sleep_optionsmacos_animation_optionsmacos_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.ymltests 目录中的 playbook/config 查看 TravisCI 配置。您可以在 这里 查看 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