Как заставить Travis CI создавать и тестировать проекты xcode, размещенные на Github?
у меня есть открытый исходный код, размещенный на github для добавления категория на основе блока в UITextField. Я добавил .Трэвис.YML-файл, чтобы заставить travis CI создавать и запускать код при каждом нажатии. ссылка на предупреждение Travis CI . Он успешно строит проект. Предупреждение, которое я получаю при запуске .Трэвис.скрипт YML-это:
WARNING: Using Objective-C testing without specifying a scheme and either
a workspace or a project is deprecated.
пример проекта, который я хочу запустить, находится в Примере Folder / UITextView Blocks/ Как я могу добавить к .Трэвис.файл yml для запуска этого проекта? Мой Трэвис.файл YML теперь состоит из
language: objective-c
2 ответов
обновление 2017
skypecakes упоминает в комментариях:
при использовании XCode 8 и выше:
xctool
больше не поддерживается, и не работает.
Использовать xcodebuild.
оригинальный ответ (2013)
вы можете проверить в этом уроке, который объясняет:
xctool
- отличный выбор для запуска тестов под непрерывным сервером интеграции, таким как Travis CI или Jenkins.
чтобы выполнить тесты в среде непрерывной интеграции, необходимо создать общие схемы для целевого приложения и убедиться, что все зависимости (например, CocoaPods) добавляются явно в схему.
Для этого:
- откройте лист управление схемами, выбрав продукт меню > схемы > схемы...
- Найдите цель приложения в списке. Убедитесь, что установлен флажок Общий в крайнем правом столбце листа.
- если ваше приложение или тестовые цели включают межпроектные зависимости, такие как CocoaPods, вам нужно будет убедиться, что они были настроены как явные зависимости. Так поступать:
- выделите цель приложения и нажмите Редактировать... кнопка для открытия редактирования схемы лист.
- перейдите на вкладку сборка в левой панели редактора схем.
- Нажмите кнопку + и добавьте каждую зависимость в проект. CocoaPods будет отображаться как статическая библиотека с именем Pods.
- перетащите зависимость выше цели приложения, чтобы она была построена первой.
теперь у вас будет новый файл в
xcshareddata/xcschemes
каталог под вашим проектом Xcode.
Это общая схема, которую вы только что настроили.
Проверьте этот файл в своем репозитории, и xctool сможет найти и выполнить ваши тесты на следующей сборке CI.для большей гибкости вы также можете контролировать, как Трэвис устанавливает и вызывает xctool:
language: objective-c
before_install:
- brew update
- brew install xctool
script: xctool -workspace MyApp.xcworkspace -scheme MyApp test
эта последняя конфигурация похожа на подход, иллюстрированный в этот и другие учебник:
как только вы свяжете свое РЕПО следующим шагом было бы добавить
.travis.yml
файл в корень РЕПО.
language: objective-c
before_script: travis/before_script.sh
script: travis/script.sh
- сначала я говорю Трэвису, что это проект objective-C.
- затем я говорю Трэвису, как я хотел бы, чтобы он сделал CI против этого РЕПО, дав ему инструкции о том, какие скрипты он должен запускать, чтобы фактически выполнить сборку.
я также даю некоторые дополнительные инструкции о том, что делать непосредственно перед запуском строить.
довольно часто все шаги сборки встроены прямо в.Трэвис.YML-файл, но я предпочитаю создавать сценарии bash в моем РЕПО внутри каталога travis в моем РЕПО git, а затем просто ссылаться на эти сценарии из моего.travis.yml
.
это.yml
файл хороший и маленький, а также позволяет мне легко тестировать сценарии сборки travis локально.мы дали Трэвису
before_script
на выше. Это предназначен для использования агентом Travis для загрузки инструментов, необходимых как часть сборки. Вот как это выглядит:
travis/before_script.sh
#!/bin/sh
set -e
brew update
brew install xctool
очень удобно. Мы просто используем homebrew для установки
xctool
на агенте построения.
Все агенты travis build поставляются сhomebrew
предварительно установлен, но иногда формула не актуальна, поэтому лучше всего запуститьbrew update
передbrew install
.
Это все, что нам нужно сделать, чтобы подготовить нашего агента к сборке.Далее давайте посмотрим на сам скрипт сборки:
travis/script.sh
#!/bin/sh
set -e
xctool -workspace MyWorkspace -scheme MyScheme build test
опять же, это очень просто.
Сначала мы делаем базовую проверку здравомыслия прошуxctool
чтобы построить наше приложение, указав рабочее пространство и схему.
Это просто проверяет, что у нас нет ошибок компиляции.
Предполагая, что это удастсяxctool
затем построит и запустит цель модульного тестирования для нашего приложения, запустив симулятор на Travis агент, если нужно.
когда вы указываете язык Objective-C в .travis.yml
файл, сервер CI по умолчанию будет использовать их адаптированная версия osx-cibuild.sh
. Это будет искать любые рабочие области в текущем каталоге и создавать все целевые объекты по умолчанию.
поскольку ваше РЕПО не имеет никаких рабочих пространств в корне (они находятся под Examples
), он не может найти, что строить, и поэтому ничего не будет строить.
вы можете либо переместить файл проекта из-под Examples
к root, или укажите, что строить, установив XCWORKSPACE
в конфигурации Travis CI или вы можете указать пользовательский скрипт для запуска, а затем вызвать xcodebuild
себя. Настройка конфигурации рабочей области, вероятно, является предпочтительным вариантом; не настраивайте его, если вам это не нужно.
добавить что-то вроде следующего в ваш .travis.yml
:
env:
- XCWORKSPACE="Examples/UITextField-Blocks Example.xcodeproj"
(кавычки существуют из-за имени файла, имеющего внутреннее пространство.)
стоит рассматривать osx-cibuild.sh
скрипт, чтобы увидеть, как это работает, и как вы можете настроить его поведение, установив различные переменные среды.
Полезные ссылки: