Подтвердить что ты не робот

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.
4b9b3361

Ответ 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