Используем CircleCI для тестирования и деплоя iOS приложений

    CircleCI — это continuous integration сервис для веб и мобильных приложений. В статье опишу процесс настройки CircleCI для тестирования и последующего деплоя билда на Crashlytics.

    Одно из преимуществ данного сервиса — сборка билда в облаке, то есть не нужна локальная билд-машина. Сервис позволяет гибко настраивать тестирование сборки, так как у пользователя есть доступ к sudo. Также существует возможность устанавливать сторонние пакеты. На данный момент поддержка iOS находится в бете, поэтому надо писать в support, чтобы открыли доступ.
    Кого заинтересовал — прошу под кат.


    Экспорт сертификатов


    Для подписи билда понадобится экспортировать из keychain сертификаты и provisioning profile.
    — Экспортируем «Apple Worldwide Developer Relations Certification Authorit» как «cer» и называем файл apple.cer;
    — Экспортируем Distribution сертификат как «cer» и называем dist.cer;
    — Экспортируем Distribution сертификат как «p12» и называем dist.p12. При экспорте попросят ввести пароль для защиты файла. Его надо запомнить, он понадобится в дальнейшем;
    — Скачиваем adhoc provisioning profile из «Certificates, Identifiers & Profiles» портала и называем его dist.mobileprovision.

    Складываем все 4 файла в папке scrips в корне нашего репозитория. Добавляем в эту же папку скрипты «add-key.sh», «remove-key.sh» и «crashlytics.sh» из примера на гитхабе.
    — add-key.sh добавляет keychain с нашими ключами, а также копирует provisioning profile из нашей папки в папку "~/Library/MobileDevice/Provisioning Profiles/" билд-машины;
    — remove-key.sh удаляет созданный нами keychain и скопированный provisioning profile;
    — crashlytics.sh собирает, подписывает билд и отправляет на Crashlytics.

    Настройка xcode


    Добавляем Adhoc конфигурацию для сборки билдов и выставляем ее для сборки через коммандную строку. image

    Дальше выставляем Code Signing Identity следующим образом. image

    Основная схема и схема для тестирования должны быть в состоянии «shared». image

    Настройка окружения CircleCI


    Пароли для keychain и ключи crashlytics лучше хранить как переменные окружения в настройках CircleCI. Для этого заходим в Project settings -> Environment variables
    image

    Добавим переменные с названиями KEYCHAIN_PASSWORD, KEY_PASSWORD, CRASHLYTICS_API и CRASHLYTICS_SECRET, где:
    KEYCHAIN_PASSWORD — нужно придумать;
    KEY_PASSWORD — пароль, которым мы зашифровали «dist.p12»;
    CRASHLYTICS_API и CRASHLYTICS_SECRET можно взять из настроек Fabric или Crashlitycs.
    image

    Теперь заходим в Project settings ->Experimental Settings и выставляем Build iOS Projects в состояние «On»
    image

    Настройка конфигурационного файла CircleCI


    Для того чтобы задать настройки сборки и тестирования билда нужно добавить файл с их описанием в корень директории проекта и назвать его «circle.yml».
    machine:
      xcode:
        version: "6.3.1"
      environment:
        XCODE_SCHEME: use-bdd
        XCODE_WORKSPACE: use-bdd.xcworkspace
        DEVELOPER_NAME: 'iPhone Distribution'
        APPNAME: use-bdd
        PROFILE_UUID: dist
        MAIL_LIST: firstmail@gmail.com,secondmail@gmail.com
    test:
      override:
        - xctool
          -reporter pretty
          -reporter junit:$CIRCLE_TEST_REPORTS/xcode/results.xml
          -reporter plain:$CIRCLE_ARTIFACTS/xctool.log
          CODE_SIGNING_REQUIRED=NO
          CODE_SIGN_IDENTITY=
          PROVISIONING_PROFILE=
          -destination 'platform=iOS Simulator,name=iPhone 6,OS=latest'
          -sdk iphonesimulator
          -workspace $XCODE_WORKSPACE
          -scheme $XCODE_SCHEME
          build analyze build-tests run-tests 
    deployment:
      crashlytics:
        branch: [master, dev]
        commands:
          - ./scripts/add-key.sh
          - ./scripts/crashlytics.sh
          - ./scripts/remove-key.sh
    


    В секции «xcode» можем задать какой имеено версией xcode собирать проект. На данный момент доступны «6.1.1.», «6.2» и «6.3.1». В секции «environment» задаем переменные окружения:
    — XCODE_SCHEME — название xcode схемы;
    — XCODE_WORKSPACE — название xcode workspace;
    — DEVELOPER_NAME — должно совпадать с code signing identity выставленным в xcode;
    — APPNAME — название приложения;
    — PROFILE_UUID — название provisioning profile;
    — MAIL_LIST — список мейлов, на которые будут приходить уведомления о новых билдах через crashlytics.

    В секции «test» собираем, анализируем и тестим приложение. В секции «deployment» все коммиты из веток master и dev собираем и отправляем на crashlytics.

    Список источников


    Документация circleci;
    Marry CircleCI to Hockey;
    Fabric Distribution with iOS Build Tools

    Средняя зарплата в IT

    113 000 ₽/мес.
    Средняя зарплата по всем IT-специализациям на основании 5 253 анкет, за 2-ое пол. 2020 года Узнать свою зарплату
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 0

    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

    Самое читаемое