TL;DR Xcode 8 breaks code signing in Fastlane.

  • http://blog.benjamin-encz.de/post/broken-toolchain/
  • http://blog.bitrise.io/2016/09/21/xcode-8-and-automatic-code-signing.html

To reproduce.

Logon to CI Server

ssh -Y ci@10.200.35.64

Look at latest iOS-CheckoutNightly Build

cd ~/.jenkins/workspace/theapp/src
carthage update --platform iOS,watchOS
fastlane automate scheme:"Nightly"                                            \
                  branch:"feature/checkout"                                  \
                  appID:"deadbeef248cba6aff5f4c972c779"                  \
                  hockeyToken:deadbeefea4460bee6889fbfe019bd                  \
                  hockeyTag:""                                                \
                  loginKeychain:/Users/ci/Library/Keychains/login.keychain    \
                  loginKeychainPassword:ci                                        \
                  tagNamePrefix:""

This translates to the following (For the build phase):

cd ~/.jenkins/workspace/theapp/src
carthage update --platform iOS,watchOS
security unlock-keychain -p ci ~/Library/Keychains/login.keychain

gym                                         \
    --workspace "theapp.xcworkspace"        \
    --configuration "Nightly"               \
    --scheme "Nightly"                      \
    --silent false                          \
    --clean                                 \
    --export_method "enterprise"            \
    --export_team_id "DEADBEEFR6"           \
    --include_bitcode  false                \
    --include_symbols  false                \
    --output_name "theapp.ipa"                \
    --toolchain "com.apple.dt.toolchain.Swift_2_3" \ 
    --use_legacy_build_api 
lane :theappGym do |options|
    #Build and generate IPA
    gym(
        workspace: WORKSPACE,
        configuration: options[:scheme],
        scheme: options[:scheme],
        silent: false,
        clean: true,
        export_method: EXPORT_METHOD,
        export_team_id: TEAM_ID,
        include_bitcode: false,
        include_symbols: false,
        output_name: IPA_NAME,
        toolchain: "com.apple.dt.toolchain.Swift_2_3", 
        use_legacy_build_api: true    
    )
end
fastlane theappGym --verbose