💍 One Ring to bring them all
…and in the darkness guide them.
As mobile teams grow bigger, the ways of sharing the build during a release cycle increase with it. When it was just you and your friend building apps, you could just AirDrop the binary or put it in a shared folder for them to access. Now, with your team grown to include PMs, testers, designers, and other developers, you have to send the release candidates to a bunch of people via a multitude of channels across different integrations.
Tramline provides a centralized platform where teams can efficiently manage build distribution or simply monitor its progress within the release cycle. All the necessary information and actions can be accessed directly through Tramline, eliminating the need to navigate multiple platforms for these tasks.
After your CI system generates the appropriate binary file, we take that artifact and ensure its distribution across all the designated distribution channels, including the stores.
You can define the exact destinations for your build without any concerns about the technical aspects of sending it there. The interfaces across different integrations evolve quite often in the mobile world making your distribution process flaky even when you are using a very effective tool like Fastlane. We relieve you from the burdensome task of handling these operations and ensure your build reaches where it is supposed to.
For example, if you decide to incorporate Firebase App Distribution into your release cycle in the future, Tramline makes the integration seamless. With just a few clicks within the dashboard, you can effortlessly add Firebase App Distribution to your existing release workflow.
You can read more about the build distribution integrations we support in our docs.
👻 App Store and the Review Process
Everyone we know has their own App Store-review scary stories that they share with each other over the bonfire at camps. We, at Tramline, want to be the Ghostbusters to remove all your App Store woes!
Once your build is uploaded to TestFlight by your CI system, Tramline manages the entire process until release including:
- sending the build to external groups for beta testing
- preparing the store release with appropriate version, build, and release notes
- submitting the release version for review
- releasing the app with or without phased release once the review is approved
A simplified App Store release lifecycle in Tramline looks like this:
Due to current limitations with App Store Connect API, binary uploads to TestFlight are not yet supported. However, we are actively working on integrating this feature, and it will be available in the near future.
🎢 Stage Roll ‘em out
All crucial, if not all, features in mobile apps go through the cautious process of phased releases or staged rollouts.
Tramline handles staged rollout in App Store and Play Store differently due to the differences in the stores.
For Play Store, we allow the creation of a template for staged rollout and apply that template for every release cycle. It allows users to move the release through the different stages as and when they feel comfortable.
For App Store, it allows pausing and resuming rollout during the 7-day phased release process.
❄️ What else?
While Tramline aims to unify the user experience across various app stores as much as possible, it recognizes the importance of adapting to the distinct requirements and differences of each store.
For posterity and general knowledge, we maintain an ever-growing set of store quirks. It is compiled from our experience and scouring through developer forums, Stack Overflow, and various other sources of developer documentation.
✨ Future
We are actively improving the distribution mechanism for builds, and the following improvements are in progress and coming soon:
- Implementing triggers to monitor and automatically pause phased releases in the App Store based on configured metrics
- Automating staged rollout for the Play Store based on existing templates
- Enabling the upload of iOS builds to TestFlight
That’s all for this month, until the next train! 🚃