{"id":20671477,"url":"https://github.com/xcteq/xcodeserver","last_synced_at":"2025-04-19T18:37:49.557Z","repository":{"id":83858455,"uuid":"112758201","full_name":"XCTEQ/XcodeServer","owner":"XCTEQ","description":"Ansible provisioner for iOS CI using Apple's Xcode Server","archived":false,"fork":false,"pushed_at":"2017-12-01T19:52:51.000Z","size":16,"stargazers_count":8,"open_issues_count":0,"forks_count":4,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-29T11:41:43.416Z","etag":null,"topics":["ansible","ansible-role","continuous-integration","ios","server","swift","xcode"],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/XCTEQ.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-12-01T15:56:04.000Z","updated_at":"2019-04-29T08:44:01.000Z","dependencies_parsed_at":"2023-04-27T17:53:53.901Z","dependency_job_id":null,"html_url":"https://github.com/XCTEQ/XcodeServer","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XCTEQ%2FXcodeServer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XCTEQ%2FXcodeServer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XCTEQ%2FXcodeServer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/XCTEQ%2FXcodeServer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/XCTEQ","download_url":"https://codeload.github.com/XCTEQ/XcodeServer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249766156,"owners_count":21322544,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ansible","ansible-role","continuous-integration","ios","server","swift","xcode"],"created_at":"2024-11-16T20:27:34.960Z","updated_at":"2025-04-19T18:37:49.526Z","avatar_url":"https://github.com/XCTEQ.png","language":"Shell","readme":"\n[![CI Status](http://img.shields.io/travis/Shashikant86/iOS-Dev-Ansible.svg?style=flat)](https://travis-ci.org/Shashikant86/iOS-Dev-Ansible)\n\n# Xcode Server: Ansible provisioning for iOS Continuous Integration\n=========\n\nThis role can be used to setup iOS Continuous Integration Service on macOS using Apple's own CI server a.k.a Xcode Server.\nThis role also can be used for the setting up local development environment for the iOS Developer. It has all the tools required for the iOS Developers like Xcode, Swift Fastlane, Carthage, Cocoapods and lot's of homebrew packages, however you can have full control to configure your own environment with variables.  Xcode installation needs pre-downloaded XIP file\n\nRequirements\n------------\n\n* macOS High Seirra\n* Xcode 9 +\n\nXcode version before 9 are not supported with this role\n\n\n### Xcode Setup Requirements\n\nThere are couple of ways this role can install Xcode, you can pick one that is suitable for you  \n\n* Xcode XIP in `files` directory of playbook\n\nYou should place a `xip` in the `files/` directory of your playbook or place the XIP file inside $HOME directory `~/Xcode_9.1.xip`\nMention the `xcode_src` variable with version of Xcode you wish to install\n\n\n```\nxcode_src: Xcode_9.1.xip\n```\n\nWhat's in this role:\n--------------\nThis role comes with following softwares packages to provision iOS Continuous Integration Server.\n\n* Xcode 9+ Installation\n* Xcode Server Service\n* macOS defaults : Controls defaults and Software Updates\n* Homebrew : Package Manager for macOS to install packages like cartahge or cask applications (optional)\n* RVM and customised Ruby versions for Pre-installed Gems like bundler, Fastlane, Cocoapods, Xcpretty (optional)\n\nYou can customise your own playbook to override defaults and create your own playbook.\n\nRole Variables:\n----------------\n\nThis role has lot of variables which can be used to configure your own playbook. Please refer `defaults/main.yml` for list of all variables. **You can override `defaults/main.yml` variables to configure your own**. The main variables that you should change are\n\n\n```\nxcode_src: Xcode_{your_version}.xip\n\nxcode_server_user: {your_xcodeserver_user}\nansible_ssh_user: {your_ansible_ssh_user}\n\n```\n\nHow to use this Role:\n--------------\n\nImagine, you have fresh Mac with fresh macOS installed. You can setup all your Xcode Server for CI by creating Playbook for this role. You can setup config variables as per your need.\n\nAssuming you have installed Ansible, we can download the role by running command\n\n           $ $ ansible-galaxy install Shashikant86.XcodeServer\n\nNow that, we have to create our own playbook for this role by setting variables,  We can use `defaults/main.tml` file [here](https://github.com/Shashikant86/iOS-Dev-Ansible/blob/master/defaults/main.yml). The example playbook looks like this\n\n\nExample Playbook\n----------------\n\nMake a new directory called `XcodeServer` also create `XcodeServer/files` directoty and put Xcode XIP inside `files` directory.\n\n               $ mkdir xcode_server\n               $ mkdir XcodeServer/files\n               $ touch xcs_playbook.yml\n\nCreate `xcs_playbook.yml` like this inside the 'XcodeServer` directory with following content to run playbook locally. You can replace `localhost` with different hosts.  \n\n```\n---\n- hosts: localhost\n  connection: local\n\n  vars:\n    clean_xcode: yes\n    clean_rvm: yes\n    clean_homebrew: yes\n\n    configure_xcode: yes\n    configure_xcodeserver: yes\n    configure_macos_defaults: yes\n    configure_ruby_rvm: yes\n    configure_homebrew: yes\n\n    xcode_src: Xcode_9.1.xip\n\n    xcode_server_user: shashi\n    ansible_ssh_user: shashi\n\n    ruby_version: 2.4.0\n    rubygems_packages_to_install:\n      - bundler\n      - xcpretty\n\n    macos_sleep_options:\n      - systemsetup -setsleep Never\n      - systemsetup -setharddisksleep Never\n      - systemsetup -setcomputersleep Never\n\n    macos_animation_options:\n      - defaults write NSGlobalDomain NSAutomaticWindowAnimationsEnabled -bool false\n      - defaults write NSGlobalDomain NSWindowResizeTime -float 0.001\n      - defaults write com.apple.dock expose-animation-duration -int 0\n      - defaults write com.apple.dock launchanim -bool false\n\n    macos_software_autoupdates:\n      - softwareupdate --schedule off\n\n\n    homebrew_use_brewfile: true\n    homebrew_brewfile_dir: '~'\n    homebrew_repo: https://github.com/Homebrew/brew\n    homebrew_prefix: /usr/local\n    homebrew_install_path: \"{{ homebrew_prefix }}/Homebrew\"\n    homebrew_brew_bin_path: /usr/local/bin\n    homebrew_upgrade_all_packages: no\n\n\n    homebrew_installed_packages:\n      - autoconf\n      - bash-completion\n      - git\n      - carthage\n      - gpg\n      - boost\n      - cmake\n      - ssh-copy-id\n      - openssl\n      - wget\n      - curl\n\n    homebrew_taps:\n      - homebrew/core\n      - caskroom/cask\n      - homebrew/binary\n      - homebrew/dupes\n      - homebrew/versions\n\n    homebrew_cask_apps:\n      - postman\n\n  roles:\n    - Shashikant86.XcodeServer\n\n\n```\n\nChange `ansible_ssh_user` and `xcode_server_user` with your username and Feel free to set variables as per your need. Now execute this playbook\n\n      $ ansible-playbook xcs_playbook.yml\n\nWatch your mac Mini servers getting setup for iOS Continuous Integration.\n\nSetting up Continuous Intrgration with Travis\n------------\n\nWe can test this role on TravisCI by disabling the Xcode config as TravisCI has it's own Xcode images. We can test all other things on TravisCI. You can see the TravisCI config in the `.travis.yml` and playbook/config inside the `tests` directory. You can see TravisCI output [here](https://travis-ci.org/Shashikant86/iOS-Dev-Ansible/builds/203170430)\n\n\nDependencies\n------------\n\nNone\n\n\n\nLicense\n-------\n\nMIT\n\nAuthor Information\n------------------\n\nShashikant Jagtap\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxcteq%2Fxcodeserver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fxcteq%2Fxcodeserver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fxcteq%2Fxcodeserver/lists"}