Как заставить 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 скрипт, чтобы увидеть, как это работает, и как вы можете настроить его поведение, установив различные переменные среды.
Полезные ссылки: