You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

setup-certificates.sh 4.3KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. # The script is based on tutorial written by Antonis Tsakiridis published at:
  2. # https://medium.com/@atsakiridis/continuous-deployment-for-ios-using-travis-ci-55dcea342d9
  3. #
  4. # APPLE_CERT_URL - the URL pointing to Apple certificate (set to
  5. # http://developer.apple.com/certificationauthority/AppleWWDRCA.cer by default)
  6. # DEPLOY_SSH_CERT_URL - the SSH private key used by the 'scp' command to deploy
  7. # the .ipa. It is expected to be encrypted with the $ENCRYPTION_PASSWORD.
  8. # ENCRYPTION_PASSWORD - the password used to decrypt certificate/key files used
  9. # in the script.
  10. # IOS_DEV_CERT_KEY_URL - URL pointing to provisioning profile certificate key
  11. # file (development-key.p12.enc from the tutorial) encrypted with the
  12. # $ENCRYPTION_PASSWORD.
  13. # IOS_DEV_CERT_URL - URL pointing to provisioning profile certificate file
  14. # (development-cert.cer.enc from the tutorial) encrypted with the
  15. # $ENCRYPTION_PASSWORD.
  16. # IOS_DEV_PROV_PROFILE_URL - URL pointing to provisioning profile file
  17. # (profile-development-olympus.mobileprovision.enc from the tutorial) encrypted
  18. # IOS_DEV_WATCH_PROV_PROFILE_URL - URL pointing to watch app provisioning profile file(encrypted).
  19. # with the $ENCRYPTION_PASSWORD.
  20. # IOS_SIGNING_CERT_PASSWORD - the password to the provisioning profile
  21. # certificate key (used to open development-key.p12 from the tutorial).
  22. function echoAndExit1() {
  23. echo $1
  24. exit 1
  25. }
  26. CERT_DIR=$1
  27. if [ -z $CERT_DIR ]; then
  28. echoAndExit1 "First argument must be certificates directory"
  29. fi
  30. if [ -z $APPLE_CERT_URL ]; then
  31. APPLE_CERT_URL="http://developer.apple.com/certificationauthority/AppleWWDRCA.cer"
  32. fi
  33. if [ -z $DEPLOY_SSH_CERT_URL ]; then
  34. echoAndExit1 "DEPLOY_SSH_CERT_URL env var is not defined"
  35. fi
  36. if [ -z $ENCRYPTION_PASSWORD ]; then
  37. echoAndExit1 "ENCRYPTION_PASSWORD env var is not defined"
  38. fi
  39. if [ -z $IOS_DEV_CERT_KEY_URL ]; then
  40. echoAndExit1 "IOS_DEV_CERT_KEY_URL env var is not defined"
  41. fi
  42. if [ -z $IOS_DEV_CERT_URL ]; then
  43. echoAndExit1 "IOS_DEV_CERT_URL env var is not defined"
  44. fi
  45. if [ -z $IOS_DEV_PROV_PROFILE_URL ]; then
  46. echoAndExit1 "IOS_DEV_PROV_PROFILE_URL env var is not defined"
  47. fi
  48. if [ -z $IOS_DEV_WATCH_PROV_PROFILE_URL ]; then
  49. echoAndExit1 "IOS_DEV_WATCH_PROV_PROFILE_URL env var is not defined"
  50. fi
  51. if [ -z $IOS_SIGNING_CERT_PASSWORD ]; then
  52. echoAndExit1 "IOS_SIGNING_CERT_PASSWORD env var is not defined"
  53. fi
  54. # certificates
  55. curl -L -o ${CERT_DIR}/AppleWWDRCA.cer 'http://developer.apple.com/certificationauthority/AppleWWDRCA.cer'
  56. curl -L -o ${CERT_DIR}/dev-cert.cer.enc ${IOS_DEV_CERT_URL}
  57. curl -L -o ${CERT_DIR}/dev-key.p12.enc ${IOS_DEV_CERT_KEY_URL}
  58. curl -L -o ${CERT_DIR}/dev-profile.mobileprovision.enc ${IOS_DEV_PROV_PROFILE_URL}
  59. curl -L -o ${CERT_DIR}/dev-watch-profile.mobileprovision.enc ${IOS_DEV_WATCH_PROV_PROFILE_URL}
  60. openssl aes-256-cbc -k "$ENCRYPTION_PASSWORD" -in ${CERT_DIR}/dev-cert.cer.enc -d -a -out ${CERT_DIR}/dev-cert.cer
  61. openssl aes-256-cbc -k "$ENCRYPTION_PASSWORD" -in ${CERT_DIR}/dev-key.p12.enc -d -a -out ${CERT_DIR}/dev-key.p12
  62. openssl aes-256-cbc -k "$ENCRYPTION_PASSWORD" -in ${CERT_DIR}/dev-profile.mobileprovision.enc -d -a -out ${CERT_DIR}/dev-profile.mobileprovision
  63. openssl aes-256-cbc -k "$ENCRYPTION_PASSWORD" -in ${CERT_DIR}/dev-watch-profile.mobileprovision.enc -d -a -out ${CERT_DIR}/dev-watch-profile.mobileprovision
  64. security create-keychain -p $ENCRYPTION_PASSWORD ios-build.keychain
  65. security default-keychain -s ios-build.keychain
  66. security unlock-keychain -p $ENCRYPTION_PASSWORD ios-build.keychain
  67. security set-keychain-settings -t 3600 -l ~/Library/Keychains/ios-build.keychain
  68. echo "importing Apple cert"
  69. security import ${CERT_DIR}/AppleWWDRCA.cer -k ios-build.keychain -A
  70. echo "importing dev-cert.cer"
  71. security import ${CERT_DIR}/dev-cert.cer -k ios-build.keychain -A
  72. echo "importing dev-key.p12"
  73. security import ${CERT_DIR}/dev-key.p12 -k ios-build.keychain -P $IOS_SIGNING_CERT_PASSWORD -A
  74. echo "will set-key-partition-list"
  75. # Fix for OS X Sierra that hangs in the codesign step
  76. security set-key-partition-list -S apple-tool:,apple: -s -k $ENCRYPTION_PASSWORD ios-build.keychain > /dev/null
  77. echo "done set-key-partition-list"
  78. mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles
  79. cp "${CERT_DIR}/dev-profile.mobileprovision" ~/Library/MobileDevice/Provisioning\ Profiles/
  80. cp "${CERT_DIR}/dev-watch-profile.mobileprovision" ~/Library/MobileDevice/Provisioning\ Profiles/