Continuous integration Xcode Server after trigger $XCS_PRODUCT not set

I had a bot that was working perfectly under Xcode 6.4. An after trigger script was automatically uploading the IPA using this path : “$XCS_OUTPUT_DIR/$XCS_PRODUCT”

However (even after redoing a bot from scratch) it appears that :

  • Getting CFBundleVersion from within Jenkins to use it as a variable, something like ${APP_VERSION}
  • Register for messages from collabd like XCSBuildService to receive Xcode Bots integration number
  • Xcode Server Simulator Times Out Waiting 120 Seconds
  • Access build folder in Xcode Server CI bot run (env variables?)
  • PackageApplication stopped working with OS X 10.10 (Yosemite) today
  • Code Signing Resource Rules Path fails on Jenkins, CODE_SIGN_RESOURCE_RULES_PATH
    • $XCS_PRODUCT is Always empty.
    • $XCS_OUTPUT_DIR is pointing to a folder that does not exist because after checking out on server it appears that Xcode server is storing .ipa there : /Library/Developer/XcodeServer/IntegrationAssets/

    How to find my .ipa without this variable during my after trigger script?

    Solutions Collect From Internet About “Continuous integration Xcode Server after trigger $XCS_PRODUCT not set”

    I had the same problem and after discussion on Apple Developer Forums
    I found out that there actually is .IPA file inside

    /Library/Developer/XcodeServer/Integrations/Integration-INTEGRATION_ID/ExportedProduct/
    

    directory and you can access it from After Trigger Script by using something like

    originalBinaryName=$(basename "${XCS_ARCHIVE%.*}".ipa)
    originalBinaryPath="${XCS_OUTPUT_DIR}/ExportedProduct/Apps/${originalBinaryName}"
    

    I have also sent a bug report, because $XCS_PRODUCT should not be empty anyway, and it would be nice to have new environment variable for the complete path of .IPA file.