Under The Bridge Under The Bridge

Category: Tools
Review: Continuous Delivery for Mobile with fastlane

 We’ve been idly following fastlane since it was just deliver, and it has had a lively lifespan indeed from obscurity to Twitter to Google and all; so it’s reasonably sure it’s approaching industry standard status at this point, which would make a canonical introduction to it handy indeed. And, why, look what we have to review today, a shiny new copy of

Continuous Delivery for Mobile with fastlane

Fastlane Book Cover

 

Competitive mobile apps depend strongly on the development team’s ability to deliver successful releases, consistently and often. Although continuous integration took a more mainstream priority among the development industry, companies are starting to realize the importance of continuity beyond integration and testing…

What You Will Learn

  • Harness the fastlane tools for the Continuous Deployment strategy
  • Integrate Continuous Deployment with existing Continuous Integration.
  • Automate upload of screenshots across all device screen-sizes
  • Manage push notifications, provisioning profiles, and code-signing certificates
  • Orchestrate automated build and deployments of new versions of your app
  • Regulate your TestFlight users and on-board new testers

It’s actually not 100% accurate, that title; a more accurate one would be “The Complete Beginner’s Guide To How To Ship An iOS App With fastlane Making It Suck Less.” That wasn’t quite as buzzword-compliant, we suppose.

If you do happen to be an iOS-focused complete beginner at dealing with iTunes Connect and all, and you intend to follow the common path of Crashlytics and/or TestFlight for beta distribution … then yes, we believe we can recommend this unqualifiedly as the most coherent introduction out there, go buy it and you can stop reading now!

If you’ve already got this distribution thing sussed, and you’re just curious about whether this fastlane thing that all the cool kids are into these days is worth adopting … hmmm, we’ll give it a three out of five. It’s worthy at explaining what it does explain, but to make it five-star for the more accomplished developer, we’d need two star-worthy things:

1. Documentation on the Android setup and shipping process as thorough as there is for iOS. There’s about six pages worth here, which is pretty thin compared to the iOS coverage. 

If you couldn’t care less about shipping for Android, of course, then this is not a valid criticism.

2. More thorough examples of how to integrate with CI and testing services other than the selected ones, to actually deserve the Continuous Delivery label. As a specific omission we were looking for, the book promises

The next step in this beta lane is to distribute our app via two popular testing platforms: TestFlight and HockeyApp.

… and then goes on to not deliver on this promise for HockeyApp. Since that was, in fact, the main thing we were looking for in this book, how to set it up with a HockeyApp-centric workflow, we were disappointed. So we figure that we’ll take another point off for not being an encyclopedic reference. Yes, we’re brutal. Again, if you are a complete beginner and/or you do use the standard tools that the book does cover, this is not a valid criticism either.

Should you be teetering, here is the publisher’s page and you can check out the TOC and all; plus the code repo for the examples — adding fastlane to Firefox — is here on Github.

But definitely, if you know anyone who’s just getting into iOS development, we’d rate this the best introduction there is out there without question!

On the other hand, as long as we’re talking about fastlane and all, there is the odd pocket of resistance to it you might read for balance:

Five Options for iOS Continuous Delivery Without Fastlane

If you’re looking to escape Fastlane’s frequent build-breaking changes, these five options for iOS continuous delivery are worth examining…

… but that’s definitely a minority opinion, most people find it adds at least some value.

As an example, up there where I docked it a point for not including less popular CI/deployment options? Here is an example of one such:

How to set up GitLab Continuous Integration for iOS projects without a hassle

Why GitLab-CI?

We had GitLab and we couldn’t find any reason for using something else. So, we decided to use it, why not 😎? As for me, the GitLab-CI/CD is more developer-oriented than Jenkins. At least because it is aimed at the pipelines, tags, and branches, unlike Jenkins with jobs. And we have to use those things to get the necessary job instead of configuration without code. GitLab-CI/CD seems like a tool for running scripts on a remote machine; no more, but enough.

Some time later, we realized what it doesn’t matter what to use if we use Fastlane. Because it was able to do all what we needed. As the result, we got freedom from other tools. So I can strongly recommend using Fastlane instead of manual scripts or other approaches…

And, of course, we do find several mentions of “Hockey” over at 

fastlane/examples: “A collection of example fastlane setups”

so it’s not as if their omission is a crippling lack in any way. We just figure a book like this should aim for canonical completeness!

CI + CD: Looking For A New Buddy?

So first off, congratulations to our ex-neighbours (before we moved to Bangkok and all) for becoming another Vancouver company acquired by Apple!

The buddybuild team is now part of Apple!

We’re excited to share that the buddybuild team has joined the Xcode engineering group at Apple to build amazing developer tools for the entire iOS community.

We’ve always been proud to be a Canadian company, so we’re also pleased that we will be staying right here in Vancouver — a hotbed of developer and engineering talent.

The buddybuild service will remain available to existing customers to build, test, and ship iOS apps to testers through buddybuild.com…

SWEET! Big win all around, right? Right?

As of today, we are no longer accepting new customers. Existing Free Starter plans and Android app development will be discontinued on March 1, 2018…

… oh. So if you’re a little indie and/or you have an Android version, not so much then.

Well, while we can hope that this promises that our developer memberships may be including some level of CI service in the nearish future, it’s just about a guaranteed certainty that the Android side is about to become just as much a dimly remembered history as that of TestFlight. Looks like just about the same scenario in fact, only difference this time is they announced Apple’s acquisition first!

So, let’s take a look around at what options there are for the indie developer who feels the pain of those free + Android plans going away, shall we?

Here is one particular instance of that discussion being conducted online, as an issue for GitHawk:

Alternatives to Buddybuild? #1330

We will almost certainly lose support for this project. Time to find a new CI. Any suggestions?
I’m reading this article which offers:

Bitrise
Travis CI
Nevercode
CircleCI

I read about Buildkite and AppCenter on Hacker News.

I’m also considering open source, self-hosted solutions so that something like this doesn’t happen again:

Drone
Jenkins

Read through the whole discussion there: other options that showed up were

No strong consensus there, although Bitrise and Circle have positive buzz and Travis doesn’t, that’s what stands out.

Circle has an article here:

Migrating from buddybuild to CircleCI

If you enjoy managing everything with fastlane, looks like that’s the service for you. Those of us who want the magic to just work, we’ll keep looking a bit.

Here’s another fellow who went through the evaluation process and came up with a surprising answer:

Exploring Alternatives to buddybuild

In the end, I chose to go with GitLab CI. GitLab CI works very similarly to BuildKite: it merely coordinates a set of agents (“runners” in GitLab parlance), who are responsible for the actual building of the project. I’m already running a GitLab server to host my Git repositories, so using it for CI didn’t require any new installation or setup for my existing repositories…

… As I said above, GitLab CI is almost certainly not the right solution for your case. It’s the right solution for me, because a) it’s cheap, b) I was already running a GitLab server, and c) none of the other alternatives fit my needs quite as well.

OK, if you’re using GitLab, self-hosted or not, that looks like the really obvious choice!

How to set up GitLab CI for iOS in three relatively simple steps

While GitLab is a fascinating option, we expect that Github is where indie projects are likeliest to live … ours, anyways. And, as you may remember, we were kinda impressed with Microsoft’s plans for Visual Studio App Center, and haven’t had any reason to go back on that since. And in what is possibly not a complete coincidence, they recently posted

Build Any App with Visual Studio App Center

At Microsoft, we strive to deliver the best developer tools on the planet in order to help make all developers more productive. With Visual Studio App Center, you can easily automate your DevOps lifecycle to continuously build, test, release, and monitor your apps on every platform, so you have more time to focus on your users and their experience.

The App Center Build service is completely free for your first 240 build minutes per month (up to 30 minutes per build) and supports iOS, macOS, Windows, and, of course, Android apps.

App Center supports apps written in Obj-C, Swift, Java, React Native, and Xamarin, and integrates with existing tools such as GitHub, Visual Studio Team Services, and Bitbucket. Once you’ve selected your repository, setting up build automation for any branch of your desktop and mobile apps takes just a few clicks. Additionally, App Center Build includes other cloud services, so you can run UI tests to retain the highest quality standards and distribute your apps to testers…

That’s the one we’re going to try next, personally; find out for ourselves just how usable in practice App Center is, because it sure looks like the best multiplatform development support out there, and one that we can trust has just about as low a probability as possible of being acquired or discontinued … which seems to occur with depressing regularity to these tools of ours, doesn’t it now?

And as a parting note, here’s some more informed commentary and interesting speculation for WWDC 2018. Cloud Xcode Server would certainly be nice!

Apple Acquires BuddyBuild. Oh, My Xcode Server!

UPDATES:

Adding GitLab CI Support (followup to Exploring Alternatives to buddybuild)

Continuous integration and delivery with fastlane and CircleCI

Why XOD switched from Travis to Circle CI

Looking for Buddybuild Alternatives? Try App Center

Three Quick Tips: Signing Your iOS Apps with Visual Studio App Center Build

Hello WRLD: VR Developer Challenge

So ARKit by itself is pretty interesting, and adding Core Location to it gets even more interesting, but for the perfect trifecta, what do we need? Why, we need a VR world, so that we can explore real world locations without actually being there, amirite?

Well, turns out there’s an SDK for that: WRLD!

YOUR WORLD, REIMAGINED
A dynamic 3D mapping platform for smart cities and buildings, gaming, AR/VR experiences, and more.

Apparently they’ve been around for several years as “eeGeo”, but the much improved rebranding is new:

We are excited to announce today our rebrand of eeGeo to WRLD. We believe the name reflects the scope and breadth of our vision, which is to build an immersive 3D world to visualise and interact with every thing on the planet.

We’ve set an ambitious goal with our new name and vision on purpose. We can’t do it alone, as we globally operate as a collaboration between partners and our developer community. We’re committed to providing the best tools to build fully immersive experiences that benefit users in numerous ways – greater spatial understanding and decisioning, smart cities and building planning, or just creating awesome location-based games and VR experiences…

Yep, that’s pretty darn interesting. We’d already had some interesting ideas for how to mash up ARKit with real world locations, but were kinda stymied by the “well, it would only be interesting if you were actually there…” thing. But if you could take your informational ARKit app and place it in VR world instead of real world, well that gets rather more interesting, doesn’t it?

And as it happens, there’s an opportunity to get some recognition for your experiments:

WRLD DEVELOPER CHALLENGE

What if you had the WRLD at your fingertips? What would you create?

WRLD is hosting a global challenge for developers to create the most useful application or immersive experience using any of the WRLD SDKs.

Contest starts October 1st and final submissions are due December 31st.

#WRLDChallenge

 

Hello WRLD Challenge

 

So there you go, have at it!