As I mentioned in my previous postTestFlight has been acquired by Apple and will be discontinued on February 26, 2015, which is, eh, soon. Instead, they offer the “All-New TestFlight Beta Testing service available inside of iTunes Connect“.

So this post was going to be about moving to this new All-New iTunes Connect TestFlight Beta Testing service provided by Apple.

However, while investigating this new service I quickly stumbled upon so many issues with their service that renders it quite useless. Let me name a few:

  1. Apps made available to External Testers (testers that are not a member of your team in iTunes Connect) require a Beta App Review and must comply with the full App Store Review Guidelines before testing can begin. A review is required for new versions of your app that contain significant changes.
  2. A submitted build will be available for only 30 days after invitations to the testers have been sent.
  3. Enterprise (in-house) distribution builds are not supported, only App Store builds.
  4. Only support for iOS 8 and up. Really?
  5. There is no upload API which is kind of a deal breaker in a CI scenario. There is a workaround for this using deliver from fastlane which looks like a great toolset for automating iOS builds. I just happened to hear about fastlane last week in a recent episode of the Gone Mobile podcast. Sounds really interesting and I might give that a try some day.

Wow, that’s a lot of drawbacks! This led me to look for a different app distribution platform. A quick search gives you a number of options, such as http://app.io,  http://installrapp.comhttp://testfairy.com and http://hockeyapp.net.

Continue reading

In Part 1 we took care of all the prerequisites of preparing a clean Mac Mini as our Jenkins build server. Now we are ready to set up Jenkins and configure our jobs.

The Goal

It’s good to summarize what we want to accomplish here. I’m not going into the merits of a CI server and why you should have one. Just trust me, you need one. If you want to read on the basics, see this Xamarin guide.

We want to automate the BuildTestDeploy cycle for our Xamarin.iOS app, let’s call it MyProject from now on. It’s considered good practice to split up these tasks in separate jobs, both for maintainability and to limit job execution time. This way you can manage and track progress for each job separately. Separate jobs have its downsides too, but we will come to that. We are going to create 3 jobs:

  1. MyProject (Build)
  2. MyProject-testcloud (Test)
  3. MyProject-testflight (Deploy)

The MyProject job will trigger the jobs MyProject-testcloud and MyProject-testflight only when the build succeeds. This is what we call Downstream projects. Notice that we are deploying to TestFlight right after the build succeeds, we are not waiting for the Test Cloud tests to finish. This is because I want to deploy to TestFlight regardless of the Test Cloud results as TestFlight is used by our developers and manual testers.

Continue reading

book review soft skills

One of my goals for 2015 is to read more books. I’ve set myself a target of 12 books. Just 12? Yep, one book a month, that should be doable right? I used to read lots of books when I was young (those were the days), but work got in the way. So I slowly start my reading habit again with an achievable goal for 2015.

The first book I’m reading is Soft Skills: The software developer’s life manual from Jon Sonmez. Yep, the same guy who got me blogging again 🙂 I haven’t quite finished it yet, so I’m already behind target, but I’ll catch up, I promise.

This book is about developing the “less tangible” skills for the typical developer. Developers love to code, create beautiful programs, write unit tests (or not) and not worry too much about the rest, such as managing their career, office politics, etc. Just let me code, they’ll say.

However, this book is for the developer who wants more, who wants to purposefully plan and develop their professional life and career. It contains an eclectic collection of topics ranging from the obvious Career, Learning, Productivity to the less obvious topics like Marketing yourself, Financial, and even Fitness and Spirit. Actually, I don’t think this book is for developers only, much of the advice applies to people from all professions.

I’m not going to do an in-depth review of the book. There’s many people out there that already did this. I will say that I can highly recommend this book and I want to leave you with a quote from the book itself:

To all developers who strive for continuous self-improvement…
Who are not satisfied with good enough
Who always seek every opportunity to expand their horizons
and explore the unknown
Whose thirst for knowledge is never fully quenched
Who believe that software development means more than just writing code
Who know that failure is not the end, but merely a step in the journey
Who struggle at times, and sometimes fall, but always get back up again
Who have the will and determination to seek the harder path in life
And, most importantly, who are willing to help others along the way

That’s who this book is for.