No need for pilot, deliver supports this. All you have to do is:
Use the Deploy to iTunes Connect / TestFlight (with Deliver) step
And make sure to set the stepâs Submit for TestFlight External Testing? option to yes
Note: as mentioned in the optionâs description, enabling this option can significantly increase the run time of this step, as itâll have to wait for the uploaded app to be âprocessedâ by iTunes Connect before the version can be enabled for TestFlight beta testing.
I thought it would have been the default way for this to work but when I went into TestFlight external testing on iTunesConnect, the currently set build for testing hadnât been updated to the new build.
So I had to select a new build for testing (the new build was there to select, and processed), and go through the manual steps to send it out.
Here are some of my logs/configuration. Let me know if youâd like the full build url.
[04:17:33]: Selecting build 0.31 (69)âŚ
[04:17:34]: Successfully selected build
[04:17:34]: Submitting the app for reviewâŚ
[04:17:42]: Successfully submitted the app for review!
Success
The app (.ipa) was successfully uploaded to iTunes Connect, you should see it in the Prerelease section on the appâs iTunes Connect page! Donât forget to enable the TestFlight Beta Testing switch on iTunes Connect (on the Prerelease tab of the app) if this is a new version of the app!
Hmm⌠This might be a recent change in fastlane deliver, it used to be enough to pass the --submit_for_review flag to enable TestFlight external testing for the buildâŚ
Weâll check it on Monday to see if we can figure this out, or if in the meantime you have the time and you can figure out whatâs the current way to do this with fastlane tools, just let us know and weâll update the step ASAP!
Did you try that pilot command? Did that work? Iâm not sure thatâll be enough.
You can try these commands locally, if you have fastlane installed on your Mac - you can copy paste the fastlane deliver ... command from the bitrise log, to get started quickly.
Let me know if you can figure out the right fastlane command(s) / combination!
Actually Iâve gone with the entire fastlane step after configuring it all locally. It worked and submitted the build for testing (from local), so assume that Bitrise will be pretty similar. Now to deploy I just use âfastlane betaâ which uses gym and match to get the certs in order before uploading and releasing on TestFlight.
This step is meant to be used in case you donât want to integrate the whole fastlane configuration into your project, but if you do, you can use fastlane for it instead of this step, of course.
Just a question @AndyDunn - so the step did upload the build and it made it available for TestFlight Internal Testing, the issue was that it did not made it available for External Testing, right?
I donât think it made it available for internal testing either, because it didnât seem to actually select the build in anyway. Only upload it for processing and that was it as far as I could tell (I never use internal testing).
I tested the current version and it made the new build properly available for Internal Testers, but not for External Testers. Note, I did not start a new version of the app, just pushed a new build (with incremented build number, but same version number), not a new version.
This setup, that the step does not make the app available for External Testers actually makes sense, although might be a limitation / possibility for a future update. External Testing of the build requires a review from Apple, and the build canât be propagated to External Testers before that review. The review (AFAIK) also requires a couple of mandatory information, e.g. change log, which this step does not require.
Maybe we should note this better for this step, but right now the purpose of this step is to automate the uploading of your builds and the propagation to internal testers. Ideally, once the build is available, your internal testers (QA team) will pick up the build and test it, and you only release it for external testers once the internal test was successful.
Of course, if you donât have an internal testing team, this might be a limitation, depends on your development workflow.
@viktorbenei
Im facing a similar problem. The Bitrise step uploads a new build to iTC, but Im getting the following error:
[!] The request could not be completed because:
[en-US]: You must detail whatâs new in this version in English (U.S.).
Deploy failed, error: exit status 1
If I go manually to iTC and set the what is new text, the problem goes away.
My question is: Is there a way to set the âWhat is newâ text from Bitrise?
I have âSkip Metadataâ to false, but I have no idea how to send the metada.
Is there a way to populate the âWhat to Testâ field in TestFlight?
I have an automated build for my staging and production environments based on the branch commit. I would like to indicate in the field which environment the build is pointing to.
We use fastlane pilot with the distribute_external and changelog parameters to submit TestFlight betas to external testers almost every day and it usually works great. However, we occasionally run into issues with BitRise and the amount of time it takes to process the binary on iTunesConnect. Occasionally that exceeds BitRiseâs 75 minute timeout and BitRise aborts the build.
@jeffremer sure, no problem at all! Please ping our support via the on-site chat, weâre happy to bump your build time
P.S.: if youâd have some time the setup you mentioned seems interesting - would you mind sharing it there? Just the related part of the bitrise.yml or similar, I think that could help a ton of iOS developers
@viktorbenei Hi, sorry for bumping the thread, ATM the step no longer include Submit for TestFlight External Testing, both with and without application loader. Is there anyway to also submit for external group? Or I have to use fastlane?
Hi @tien.vu.nano! It would appear that since this thread was active, the Notify External Testers function of deliver has been moved over to pilot. So in this case, youâd unfortunately have to use a Fastlane or Script step to trigger pilot, which does have that option available according to the fastlane docs. Not as neat as having everything done via our step, but it should get the job done.