Search code examples
iosxcodecontinuous-integrationbotsxcode-server

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 :

  • $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?


Solution

  • 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.