Как мне автоматизировать установку Xcode? - PullRequest
5 голосов
/ 28 декабря 2011

Я пытаюсь написать сценарий оболочки, который установит все наши инструменты разработки и зависимости на чистую машину OSX.

Кто-нибудь знает лучший подход для автоматизации установки Xcode?

Я делаю это для:

  1. Документирование среды разработки.
  2. Ускорение процесса адаптации для новых разработчиков.
  3. Следуйте принципу автоматизации всего.

Ответы [ 4 ]

6 голосов
/ 16 декабря 2014

Полностью автоматизированная установка XCode

Сначала войдите в систему на сайте загрузок Apple Developer и получите версию XCode.dmg, которая работает для вашей версии OSX. Возможно, вы захотите получить пару версий для поддержки различных платформ OSX (например, 10.10 Yosemite, 10.9 Mavericks и т. Д.). Загрузите dmg на файловый хост, к которому у вас есть доступ (например, Amazon S3, Dropbox, ваш провайдер общего хостинга и т. Д ...)

Измените DOWNLOAD_BASE_URL в следующем сценарии и переименуйте dmgs соответствующим образом с номером версии и сборки или добавьте его в сценарий ниже:

#!/bin/bash
DOWNLOAD_BASE_URL=http://example.com/path/to/xcode/dmgs/

## Figure out OSX version (source: https://www.opscode.com/chef/install.sh)
function detect_platform_version() {
  # Matching the tab-space with sed is error-prone
  platform_version=$(sw_vers | awk '/^ProductVersion:/ { print $2 }')

  major_version=$(echo $platform_version | cut -d. -f1,2)

  # x86_64 Apple hardware often runs 32-bit kernels (see OHAI-63)
  x86_64=$(sysctl -n hw.optional.x86_64)
  if [ $x86_64 -eq 1 ]; then
    machine="x86_64"
  fi
}

detect_platform_version

# Determine which XCode version to use based on platform version
case $platform_version in
  "10.10") XCODE_DMG='XCode-6.1.1-6A2008a.dmg' ;;
  "10.9")  XCODE_DMG='XCode-5.0.2-5A3005.dmg'  ;;
  *)       XCODE_DMG='XCode-5.0.1-5A2053.dmg'  ;;
esac

# Bootstrap XCode from dmg
if [ ! -d "/Applications/Xcode.app" ]; then
  echo "INFO: XCode.app not found. Installing XCode..."
  if [ ! -e "$XCODE_DMG" ]; then
    curl -L -O "${DOWNLOAD_BASE_URL}/${XCODE_DMG}"
  fi

  hdiutil attach "$XCODE_DMG"
  export __CFPREFERENCES_AVOID_DAEMON=1
  sudo installer -pkg '/Volumes/XCode/XCode.pkg' -target /
  hdiutil detach '/Volumes/XCode'
fi

Возможно, вас заинтересует установка инструментов командной строки XCode, а также обход лицензионного соглашения XCode:

curl -Ls https://gist.github.com/trinitronx/6217746/raw/58456d6675e437cebbf771c60b6005b4491a0980/xcode-cli-tools.sh | sudo bash

# We need to accept the xcodebuild license agreement before building anything works
# Silly Apple...
if [ -x "$(which expect)" ]; then
  echo "INFO: GNU expect found! By using this script, you automatically accept the XCode License agreement found here: http://www.apple.com/legal/sla/docs/xcode.pdf"
  expect ./bootstrap-scripts/accept-xcodebuild-license.exp
else
  echo -e "\x1b[31;1mERROR:\x1b[0m Could not find expect utility (is '$(which expect)' executable?)"
  echo -e "\x1b[31;1mWarning:\x1b[0m You have not agreed to the Xcode license.\nBuilds will fail! Agree to the license by opening Xcode.app or running:\n
    xcodebuild -license\n\nOR for system-wide acceptance\n
    sudo xcodebuild -license"
  exit 1
fi

Альтернативный метод

Альтернативой является использование этого яблочного сценария, который я создал .

Для использования:

git clone https://gist.github.com/6237049.git
cd 6237049/
# Edit the script with AppleScript Editor to replace your APPLE ID and PASSWORD
osascript Install_XCode.applescript

Вас также может заинтересовать мой ответ здесь: Как загрузить и установить инструменты командной строки для Xcode .

Я бы порекомендовал другой метод вместо метода appleScript. Яблочный скрипт зависит от иерархии элементов пользовательского интерфейса, которая может не всегда оставаться неизменной для будущих версий приложения App Store для OSX. Это просто кажется мне хрупким. Установка XCode через командную строку через dmg, вероятно, является наиболее надежным способом.

2 голосов
/ 20 ноября 2018

Что ж, только для тех, кто заходит на эту страницу, один из авторов Fastlane собирает гем, чтобы автоматизировать этот процесс.

https://github.com/KrauseFx/xcode-install

2 голосов
/ 28 декабря 2011

Начиная с Xcode 4.3, он поставляется в виде пакета приложений. При первом запуске приложения оно продолжит установку. Поскольку это бета-версия, она все еще не исправлена, но в настоящее время установочные пакеты после запуска находятся в комплекте приложений внутри каталога Contents / Resources / Packages .

Таким образом, в зависимости от вашей среды, ваш скрипт установки может просто скопировать пакет Xcode.app в каталог Applications, и ваши пользователи могут завершить установку при первом запуске. Или вы можете скопировать пакет, а затем вручную установить дополнительные пакеты с помощью утилиты installer(8). Для получения дополнительной информации об использовании установщика см. Справочные страницы .

0 голосов
/ 05 октября 2017

Множество вещей для автоматизации загрузки и установки устарели.Я работал над чем-то для другого проекта и думаю, что у меня есть довольно хорошее решение:

https://github.com/rockholla/macosa/blob/master/bin/macosa_xcode

И вот часть загрузки:

https://github.com/rockholla/macosa/blob/master/bin/macosa_xcode_download

...