Archive

Posts Tagged ‘jenkins’

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

May 23rd, 2011 2 comments

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:app_store        # 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-публикации – остается домашним заданием :)