Re[3]: xcodebuild, automatic code signing и CI
От: kpcb Россия  
Дата: 11.03.19 04:38
Оценка: 4 (1)
Здравствуйте, Dair, Вы писали:

D>Здравствуйте, kpcb, Вы писали:


D>>>Может, RSDN в курсе? Как у вас делается CI под iOS и, особенно, code signing?

K>>Сборка, подписывание, публикация, загрузка отладочных символов, всё делается при помощи fastlane

D>А как оформлено подписывание в fastlane?


D>У нас в проектах везде автоматическое подписывание прописано. Так оно не работает.

D>Я взял fastlane, написал сначала sigh и cert, так оно хочет зачем-то каких-то непонятных привилегий, а пользователь ci как developer в программе разработки указан.

D>Автоподписывание, как я уже указал выше, не работает. Начал писать disable_automatic_signing. Оказалось, что надо его указывать и для подпроектов тоже, но не для POD-проектов. Ну и вот такой геморрой.


вот фрагмент lane-a, который собирает версию ad-hoc для публикации d Fabric

entitlements = '<entintelments-file>.entitlements'
xcargs = "CODE_SIGN_ENTITLEMENTS='" + entitlements + "'"

xcargs = xcargs + " GCC_PREPROCESSOR_DEFINITIONS='$(inherited) ENABLE_DIAGNOSTIC=1' OTHER_SWIFT_FLAGS='$(inherited) -D ENABLE_DIAGNOSTIC'"

provisioning_type = 'adhoc'

match(
    team_id: '...TeamID...',
    app_identifier: ['...applicationID...'],
    type: provisioning_type,
    readonly: true
)

xcargs = xcargs + " PROVISIONING_PROFILE='" + ENV["sigh_" + '...applicationID...' + "_" + provisioning_type] + "'"
xcargs = xcargs + " PROVISIONING_PROFILE_SPECIFIER='" + ENV["sigh_" + '...applicationID...' + "_" + provisioning_type + "_profile-name"] + "'"

# unlock an existing keychain and add it to the keychain search list
unlock_keychain(
    path: keychain_path,
    password: keychain_password
) unless keychain_path.nil? || keychain_password.nil?

sh("security set-keychain-settings -t 3600 -l #{keychain_path}") unless keychain_path.nil?

# clear derived data
clear_derived_data(
    derived_data_path: derived_data_path
) unless derived_data_path.nil?

ipa_path = gym(
    workspace: 'your-project.xcworkspace',
    scheme: scheme,
    xcargs: xcargs,
    include_bitcode: false,
    clean: true,
    configuration: 'Release',
    export_method: 'ad-hoc',
    derived_data_path: derived_data_path,
    skip_profile_detection: true
)
Re: xcodebuild, automatic code signing и CI
От: kpcb Россия  
Дата: 08.03.19 10:37
Оценка: 2 (1)
Здравствуйте, Dair, Вы писали:

D>Может, RSDN в курсе? Как у вас делается CI под iOS и, особенно, code signing?


Сборка, подписывание, публикация, загрузка отладочных символов, всё делается при помощи fastlane
xcodebuild, automatic code signing и CI
От: Dair Россия  
Дата: 07.03.19 17:11
Оценка:
У меня CI iOS-продукта сделан Jenkins'ом, который вызывает самописный скрипт, который в результате вызывает xcodebuild с набором параметров.

как-то так
xcodebuild -workspace PROJECTNAME.xcworkspace -scheme PROJECTNAME -configuration 'Release AdHoc' archive -archivePath /tmp/path/to/PROJECTNAME.xcarchive -allowProvisioningUpdates


Всё сломалось пару недель назад, когда обновилась то ли сама макось (10.14.2), то ли Xcode (10.1 (10B61)). Скрипт не поменялся ни на байт, но собираться оно перестало.

error: The operation couldn’t be completed. Unable to log in with account 'тут аккаунт CI'. The login details for account 'тут аккаунт CI' were rejected. (in target 'PROJECTNAME')

Build system information
error: No profiles for 'com.MYCOMPANY.PROJECTNAME' were found: Xcode couldn't find any iOS App Development provisioning profiles matching 'com.MYCOMPANY.PROJECTNAME'. (in target 'PROJECTNAME')


При этом, если запустить ровно тот же xcodebuild с теми же параметрами из командной строки сборочного сервера, зайдя на него по VNC, всё отлично собирается. А если заходить по SSH (как делает и Jenkins) — то нет.

Нагуглил разблокирование keychain'а, вставил перед сборкой

security unlock-keychain -p PASSWORD login.keychain


не помогло.

Stackoverflow не в курсе таких проблем.
forums.developer.apple.com в курсе таких проблем, но не в курсе их решений.


Может, RSDN в курсе? Как у вас делается CI под iOS и, особенно, code signing?
Re[2]: xcodebuild, automatic code signing и CI
От: Dair Россия  
Дата: 08.03.19 14:55
Оценка:
Здравствуйте, kpcb, Вы писали:

D>>Может, RSDN в курсе? Как у вас делается CI под iOS и, особенно, code signing?

K>Сборка, подписывание, публикация, загрузка отладочных символов, всё делается при помощи fastlane

А как оформлено подписывание в fastlane?

У нас в проектах везде автоматическое подписывание прописано. Так оно не работает.
Я взял fastlane, написал сначала sigh и cert, так оно хочет зачем-то каких-то непонятных привилегий, а пользователь ci как developer в программе разработки указан.

Автоподписывание, как я уже указал выше, не работает. Начал писать disable_automatic_signing. Оказалось, что надо его указывать и для подпроектов тоже, но не для POD-проектов. Ну и вот такой геморрой.
Re[4]: xcodebuild, automatic code signing и CI
От: Dair Россия  
Дата: 11.03.19 16:58
Оценка:
Здравствуйте, kpcb, Вы писали:

K>вот фрагмент lane-a, который собирает версию ad-hoc для публикации d Fabric

Спасибо!

K>sh("security set-keychain-settings -t 3600 -l #{keychain_path}") unless keychain_path.nil?

Воспользовался вот этим, но не помогло

Видимо, в проекте в ручную у вас выбран профиль для подписи.

Но я в результате нашёл, как включить автоподписку обратно, вот этот тред помог:

Developer relations was able to provide a workaround:
1. Remove the account via Xcode's preferences
2. Quit Xcode
3. In terminal, set the preference to not use the keychain service:

defaults write com.apple.dt.Xcode DVTDeveloperAccountUseKeychainService_2 -bool NO

4. Re-open Xcode and re-add the account

Отредактировано 09.04.2019 6:47 Dair . Предыдущая версия . Еще …
Отредактировано 11.03.2019 16:58 Dair . Предыдущая версия .
Re: xcodebuild, automatic code signing и CI
От: wl. Россия  
Дата: 09.04.19 06:36
Оценка:
Здравствуйте, Dair, Вы писали:

D>Может, RSDN в курсе? Как у вас делается CI под iOS и, особенно, code signing?


через https://wiki.jenkins.io/display/JENKINS/Xcode+Plugin
периодически сборка ломается обновлениями всякими, но работает как правило
Re[2]: xcodebuild, automatic code signing и CI
От: Dair Россия  
Дата: 09.04.19 06:48
Оценка:
Здравствуйте, wl., Вы писали:

wl.>периодически сборка ломается обновлениями всякими, но работает как правило


Ну вот у меня "обновлениями сломалось" так, что пополам и две недели я не мог починить.
Re: xcodebuild, automatic code signing и CI
От: goloveshin Россия  
Дата: 18.12.19 10:17
Оценка:
Здравствуйте, Dair, Вы писали:

D>При этом, если запустить ровно тот же xcodebuild с теми же параметрами из командной строки сборочного сервера, зайдя на него по VNC, всё отлично собирается. А если заходить по SSH (как делает и Jenkins) — то нет.


При заходе интерактивно, через VNC, грузится профайл пользователя.
При выполнении скрипта через ssh, как делает Дж — не грузится.
Нужно в начале скрипта добавить:
source /etc/profile
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.