Здравствуйте, 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
)