Travis CI не работает с ошибкой подписи кода
Travis CI не удается создать мое приложение, потому что проект Xcode настроен на необходимость подписания кода, а у Travis нет моих сертификатов. Я мог бы исправить это, отключив подписание кода, но тогда песочница и права не будут работать. Я знаю, что, строя из командной строки, вы можете передать CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO
в xcodebuild
, чтобы отключить подписание кода, но как вы это делаете в Travis CI?
Здесь my .travis.yml
:
language: objective-c
xcode_workspace: "Mac Linux USB Loader.xcworkspace"
xcode_scheme: "Mac Linux USB Loader"
И вот ошибка (у меня есть код из многих предыдущих строк, относящихся к Cocoapods, поскольку они не актуальны:
Check dependencies
Code Sign error: No code signing identities found: No valid signing identities (i.e. certificate and private key pair) matching the team ID "T47PR9EQY5" were found.
Ответы
Ответ 1
Вы пытались добавить это на вас travis.yml:
language: objective-c
script:
- xcodebuild [DEFAULT_OPTIONS] CODE_SIGNING_REQUIRED=NO
Или импортируйте версию (и дистрибутив, если вы собираетесь использовать в своей сборке) cert/key в цепочку ключей и скопируйте профиль подготовки команды, чтобы сделать работу по подписи кода. Вот так:
language: objective-c
before_script:
- ./scripts/add-key.sh
script:
- xcodebuild [DEFAULT_OPTIONS] CODE_SIGNING_REQUIRED=NO
add-key.sh
#!/bin/sh
KEY_CHAIN=ios-build.keychain
security create-keychain -p travis $KEY_CHAIN
# Make the keychain the default so identities are found
security default-keychain -s $KEY_CHAIN
# Unlock the keychain
security unlock-keychain -p travis $KEY_CHAIN
# Set keychain locking timeout to 3600 seconds
security set-keychain-settings -t 3600 -u $KEY_CHAIN
# Add certificates to keychain and allow codesign to access them
security import ./scripts/certs/dist.cer -k $KEY_CHAIN -T /usr/bin/codesign
security import ./scripts/certs/dev.cer -k $KEY_CHAIN -T /usr/bin/codesign
security import ./scripts/certs/dist.p12 -k $KEY_CHAIN -P DISTRIBUTION_KEY_PASSWORD -T /usr/bin/codesign
security import ./scripts/certs/dev.p12 -k $KEY_CHAIN -P DEVELOPMENT_KEY_PASSWORD -T /usr/bin/codesign
echo "list keychains: "
security list-keychains
echo " ****** "
echo "find indentities keychains: "
security find-identity -p codesigning ~/Library/Keychains/ios-build.keychain
echo " ****** "
# Put the provisioning profile in place
mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles
cp "./scripts/profiles/iOSTeam_Provisioning_Profile_.mobileprovision" ~/Library/MobileDevice/Provisioning\ Profiles/
cp "./scripts/profiles/DISTRIBUTION_PROFILE_NAME.mobileprovision" ~/Library/MobileDevice/Provisioning\ Profiles/
Ответ 2
Пожалуйста, найдите мой .travis.yml файл ниже, который исправляет это сообщение об ошибке и другие, при использовании проекта Xcode 7 + Swift + iOS 9 + инструмент непрерывной интеграции, доступный на travis-ci. орг:
# http://docs.travis-ci.com/user/languages/objective-c/
# https://github.com/facebook/xctool
language: objective-c
osx_image: xcode7
# xcode_project: SampleNotifcations/SampleNotifcations.xcodeproj
# xcode_workspace: SampleNotifcations/SampleNotifcations.xcworkspace
# xcode_scheme: SampleNotifcationsTests
podfile: SampleNotifcations/Podfile
# xcode_sdk: iphonesimulator9.0
script:
xctool
-workspace SampleNotifcations/SampleNotifcations.xcworkspace
-scheme SampleNotifcationsTests
-sdk iphonesimulator
-destination 'platform=iOS Simulator,name=iPhone 6 Plus'
build
test
ONLY_ACTIVE_ARCH=NO
CODE_SIGN_IDENTITY=""
CODE_SIGNING_REQUIRED=NO
before_install:
- brew update
- brew uninstall xctool && brew install --HEAD xctool
Источники:
Ответ 3
Если вам не нужно строить для iphoneos
, например. если вы просто хотите знать, собирается ли проект или проходят тесты вашего устройства. Вы можете указать iphonesimulator
sdk. Делая это, xctool
не будет подписывать код.
script: xctool -sdk iphonesimulator -workspace {WORKSPACE}.xcworkspace -scheme {SCHEME} build test
Ответ 4
language: objective-c
script: xctool -project [xcodeproject] -scheme [scheme] build CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO
Вы можете обратиться к this.travis.yml
Ответ 5
.travis.yml:
language: objective-c
osx_image: xcode7.2
script:
- xctool -workspace XXX.xcworkspace -scheme XXX -sdk iphonesimulator ONLY_ACTIVE_ARCH=NO
- xctool test -workspace XXX.xcworkspace -scheme XXXTests -sdk iphonesimulator ONLY_ACTIVE_ARCH=NO
before_script:
- chmod a+x ./scripts/add-key.sh
- sh ./scripts/add-key.sh
add-key.sh:
#!/bin/sh
# Create a custom keychain
security create-keychain -p travis ios-build.keychain
# Make the custom keychain default, so xcodebuild will use it for signing
security default-keychain -s ios-build.keychain
# Unlock the keychain
security unlock-keychain -p travis ios-build.keychain
# Set keychain timeout to 1 hour for long builds
# see http://www.egeek.me/2013/02/23/jenkins-and-xcode-user-interaction-is-not-allowed/
security set-keychain-settings -t 3600 -l ~/Library/Keychains/ios-build.keychain
# Add certificates to keychain and allow codesign to access them
security import ./scripts/certs/XXXDevelop.p12 -k ~/Library/Keychains/ios-build.keychain -P $PASSWORD -T /usr/bin/codesign
security import ./scripts/certs/XXXDistribution.p12 -k ~/Library/Keychains/ios-build.keychain -P $PASSWORD -T /usr/bin/codesign
# Put the provisioning profile in place
mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles
cp "./scripts/profile/XXXdevPP.mobileprovision" ~/Library/MobileDevice/Provisioning\ Profiles/
cp "./scripts/profile/XXXdisPP.mobileprovision" ~/Library/MobileDevice/Provisioning\ Profiles/
![my dir tree]()
ссылка на детали
Ответ 6
Я могу передать только установку Objective-C с помощью языка, например, в ".travis.yml"
language: objective-c