Волшебник страны Xcode

wox (Wizard Of Xcode) - восхительно удобная штучка для сборки iOS проектов из консоли, что весьма актуально для всяких автоматизаций.

Написана на ruby, установка:

gem install wox

После этого создаем Rakefile, самый навороченный на данный момент пример:

require 'wox'

Wox::Tasks.create :info_plist => 'project-Info.plist', :sdk => 'iphoneos' do
    build :debug, :configuration => 'Debug - Local Server'
    build :release, :developer_certificate => 'iPhone Developer: Valerii Hiora (8GA39LD1DZ)', :configuration => 'Release' do
        ipa :app_store, :provisioning_profile => 'App Store'
        ipa :adhoc, :provisioning_profile => 'Ad Hoc' do
            testflight :publish, :api_token => 'your_token',
                :team_token => 'your_testers_team_token',
                :notes => proc { File.read("CHANGELOG") },
                :distribution_lists => %w[AlphaTesters],
                :notify => true
        end
    end
end

Код в принципе понятен без особых комментариев, настроить можно абсолютно все - сертификаты, какие provisioning profiles использовать, можно даже сразу публиковать на Testflight (о нем писал раньше). Вложенные таски наследуют настройки родителей, т.е. testflight:publish будет собирать с использованием provisioning profile из ipa:adhoc и подписываться это будет сертификатом, указанным в build:release. В случае чего любую настройку можно переопределять.

Примеры использования:

Собрать дебажную версию:

rake build:debug

Подготовить ipa для заливки в AppStore:

rake ipa:appstore

Подготовить adhoc ipa и залить его на Testflight

rake testflight:publish

Посмотреть список всех доступных тасков:

$ rake -T
rake build:debug          # Build customiphone 1.0 with Debug - Local Server configuration
rake build:release        # Build customiphone 1.0 with Release configuration
rake info:configurations  # List available configurations
rake info:sdks            # List available sdks
rake info:targets         # List project targets
rake ipa:adhoc            # Creates build/project-1.0-Release-adhoc.ipa
rake ipa:appstore         # Creates build/project-1.0-Release-app_store.ipa
rake testflight:publish   # Publishes build/project-1.0-Release-adhoc.ipa to testflight

По умолчанию версия продукта берется из Info.plist, но ее можно переопределить с помощью

:version => 1.0.3

Последний штрих - генерация правильного changelog’а для Testflight-публикации - остается домашним заданием :)

Comments