AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |
Back to Blog
Teamcity slack integration4/19/2023 ![]() Also, the artificially elongated build times could confuse the build server system that monitors build time. With separate CI servers before on a single machine, you might have projects building in parallel which push the memory and cpu limits of the build machine. The TeamCity server queues all the builds, so if an Android project is building when an iOS project updates, the iOS build is queued until the Android project finishes. There’s a single dashboard that shows the status for all the projects. Having the CI for all our projects under the TeamCity roof also comes with some nice benefits. There are even utilities to sync our DSYM files from iTunes Connect to our crash reporting service. Fastlane’s ‘match’ tool keeps our provisioning profiles synced across machines. ![]() We can easily publish beta builds to Crashlytics and send production builds right to Apple’s App Store. ![]() Success and errors are reported to the team via Sack. It’s simple to compute a build number for each build and push that as a git tag. Now that our build system is fully Fastlane-ed, we benefit from their rich library of plugins and utilities. Fastlane also creates TeamCity compatible output for tests, so our unit test reports are displayed nicely in the TeamCity dashboard. TeamCity is great at running and monitoring command line tools and now with Fastlane, our iOS and Mac builds are easily driven from the command line. We were already using TeamCity for CI with our other projects (Python, Angular, Android) and it seemed like a good fit. This is a great feature, but it means we can’t realistically do that from Xcode Server. One hiccup - Fastlane really wants to drive the whole build process. It was clear that it was time to wholeheartedly jump on the Fastlane bandwagon to drive our automated build system. There were also some pieces we had built by hand ( Slack integration, git tagging) that Fastlane included out of the box. Fastlane, on the other hand, handled all the maintenance internally, if we would embrace Fastlane fully. Eventually, we were spending a good deal of time maintaining these scripts. We built python scripts to integrate various Fastlane pieces with Xcode Server. As Fastlane developed, we pulled more and more features into our CI setup. In the years since, Fastlane has grown to be a full and robust set of automation tools that blanket the iOS and Mac build cycle, reaching far beyond the basic build/test routine. ![]() When we first adopted Xcode Server, Fastlane was in its infancy, only partially able to cover the iOS build cycle. It doesn’t go beyond the immediate build/test cycle to handle things like provisioning profile management, git tagging, or delivery to the App Store.Įnter Fastlane. Unfortunately, that’s where Xcode Server runs out of steam. You don’t have to bounce out to a website to see the build status and any errors or failing tests link directly to your code. The great thing about Xcode Server is the integration right into Xcode. Xcode Server, after several years of evolution, has become a solid CI server and has some advanced features like integrated unit testing, performance testing and reporting. We switched to TeamCity with very good results. However, as our project load grew and our need for reliable automation increased, we found that Xcode Server wasn’t meeting our needs. For iOS and Mac development, it might seem like a natural choice to use Xcode Server and we did, for a time. Let’s dive a little deeper at the toolset we use for CI. ![]() If something goes wrong, the team is alerted immediately so we can get the train back on the tracks. Any updates get compiled, tested, packaged and shipped off for user consumption. In our world, CI means that we have a trusty assistant sitting in the shadows that watches for new additions to our code repository. At Oak City Labs, we love our continuous integration (CI). ![]()
0 Comments
Read More
Leave a Reply. |