Покрытие кода для проекта Swift 3.0 в Gitlab CI

108
15

У меня есть проект iOS, написанный Swift 3.0 с CocoaPods. Я настроил Gitlab CI для этого проекта, и он отлично работает. Это мой файл .gitlab-ci.yml:


stages:
- build
build_project:
stage: build
script:
- rm -rf Pods;rm -rf MyProject.xcworkspace;rm -rf MyProject.xcodeproj/project.xcworkspace
- pod install
- xcodebuild clean -workspace MyProject.xcworkspace -scheme MyProject | xcpretty
- xcodebuild test -workspace MyProject.xcworkspace -scheme MyProject -destination 'platform=iOS Simulator,name=iPhone 7,OS=10.2' | xcpretty -s
tags:
- ios
- lunchdot

Я не вижу покрытия кода для этого проекта в своем репо Gitlab. В настоящий момент столбец покрытия для всех моих сборок пуст. Я попытался установить разбор тестового покрытия в настройках Gitlab CI/CD Pipelines, но это не повлияло, потому что я не знаю регулярное выражение для Swift. Можно ли настроить покрытие кода для проекта Swift в Gitlab CI? Как я могу это сделать?

спросил(а) 2017-01-06T04:04:00+03:00 3 года, 8 месяцев назад
1
Решение
99

Итак, я попробовал миллион способов сделать это, и проблема оказалась xcpretty. После того, как я удалил его, я начал получать согласованные результаты с моими данными gitlab ci. Если вы все еще не хотите получать тонны данных, которые вам не нужны, вы можете использовать -quiet в файле gitlab yams. Я опубликую все это, так что продолжайте читать.


По-прежнему нужен внешний инструмент для анализа покрытия - xcov, похоже, больше не доступен, поэтому я использовал slather. Работал как шарм.


Это следующие шаги:


1) Получите slather.


2) Извлеките файл .slather.yml. Моя выглядит следующим образом (очевидно, что ваше приложение AppApp - это ваше приложение):


# .slather.yml

coverage_service: cobertura_xml
xcodeproj: ./YourApp.xcodeproj
workspace: ./YourApp.xcworkspace
scheme: YourApp
source_directory: ./YourApp
output_directory: path/to/xml_report
ignore:
- "**/Pods/*"
- "thirdparty/*"
- "./Scripts/*"
- "**/3rdParty/*"
- "../**/Developer/*"
- "**/libraries/*"
- "Module-Core/*"
- "Module-Components/*"
- "**/AppUnitTests/*"


Вы можете получить тестовый результат как html, xml, в codecov.io и т.д., полностью до вас. Просмотрите страницу GitHub slather, чтобы увидеть возможные способы сделать это. Но для текущей проблемы все, что нам нужно, - это сообщение slather в командной строке, поэтому gitlab может ее поднять. Именно там происходит правильная настройка файла gitlab yaml.


3) Настройте файл .gitlab-ci.yml. Мой выглядит так:

stages:
- build

build_project_1:
stage: build
script:
- xcodebuild clean -workspace YourApp.xcworkspace -scheme YourApp -quiet
- xcodebuild test -workspace YourApp.xcworkspace -scheme YourApp -destination 'platform=iOS Simulator,name=iPhone 6,OS=10.3.1' -enableCodeCoverage YES -quiet
after_script:
- slather coverage -s

only:
- master


4) Следующий шаг:


    Перейдите на страницу gitlab/профиль или что бы вы не назвали


    Перейдите в Настройки, а затем Трубопроводы


Настройки/трубопроводы


    Прокрутите вниз до Разбор тестового покрытия и добавьте это выражение регулярного выражения: \d+\%\s*$

Добавьте выражение регулярного выражения в предоставленное пространство и затем сохраните его


И это все. Все, что вам нужно сделать, это вызвать сборку.

ответил(а) 2017-07-19T19:18:00+03:00 3 года, 2 месяца назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема