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_userxcode_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

关于项目

Xcode Server Setup macOS for Continuous Integration using Apple Xcode Server

安装
ansible-galaxy install Shashikant86.XcodeServer
许可证
Unknown
下载
71
拥有者
Mobile DevOps, CI/CD, Mobile Build & Test Automation. Swift, Kotlin, XCTest, XCUITest, Xcode Server, Apple Developer tools, Flutter, Ruby, PHP etc