Xamarin Stack Xcode upgrade policy seems a bit aggressive


I may well be missing something here, but here’s my scenario.
My team spent 10 weeks or more building a new feature and we had completed regression testing and were waiting for for final customer approval. This took about a few weeks, and once it had occurred we noticed that the Bitrise Xamarin Stack had been upgraded to Xcode 9. This is a major upgrade and effectively is a whole new iOS SDK.
We were under pressure to release the app and did not want to go through any lengthy regression process, we’d rather release a Xcode 8 build. Unfortunately this isn’t an option, once the VM’s had this major new version, we had no option to release, and was forced to perform minimal testing with Xcode 9 in a hurry.

In the Stack selector, I see there are options for alpha and beta Xamarin stacks, and one very old Xcode 7 Vm. Is this policy the same for native iOS stacks as well? It seems a little aggressive to force a major upgrade with no option to keep using the previous version for a limited time.

Am I missing something?

1 Like

@benrnz-sv do you still need the Xcode 8 Visual Studio stack?

Just a note: for now you can use the “Hybrid” stack, which still has Xamarin Studio (not Visual Studio for Mac) with Xcode 8.

Re: policy: we’re rethinking the Xamarin related policy right now as:

  • We found there’s no use case for keeping a ~1 year old Xamarin stack (the one you referred to, which was still with Xcode 7.3). We’re thinking more about a continuously updated stack pair, the latest Xamarin (Visual Studio for Mac) version and the previous version. What do you think about this?

Also, sorry for the inconvenience, we did plan to release an LTS stack, but the Xamarin Studio -> Visual Studio for Mac switch caused some issues and slipped through the deadline for the LTS stack.

If required we can create a Visual Studio for Mac stack with Xcode 8, but that would have the latest Visual Studio for Mac version; or alternatively you can use the Hybrid stack, which will eventually (1+ months) be rebuilt without Xamarin Studio, but for now it still includes it (system report: https://github.com/bitrise-io/bitrise.io/blob/master/system_reports/osx-xamarin-stable.log#L520 )

What would you consider a limited time?

Enough time for the team to properly test the app with the new XCode and SDK, and that fits into our release cycle. Somewhere between 2-10 weeks.

Thanks @viktorbenei.
What you’re proposing makes a lot more sense. We’ve been burnt in previous years with major XCode updates, so we do prefer to be able to properly plan a full regression test of the app. This takes time, and its seldom convenient to drop everything to jump an XCode version and jeopardise current client commitments.

Having an edge VM and previous XCode version VM would be very helpful. The previous VM could also include the previous Android SDK.


1 Like

Our current proposal is to have the previous VS4Mac stack available, until stable is updated. That might mean previous Xcode version but might current Xcode version; it would simply be: when we update the VS4Mac Stable VM (when there’s an update for VS4Mac on Stable channel) we’d keep the previous version on the “previous” stack. If the previous version had the same Xcode version then this would have the same Xcode version too.

Right now this would mean that the “current” stack would have Xcode 9 and the “previous” one would have Xcode 8, as there was no update since the initial Xcode 9 support on Stable channel, but just as I checked the Xamarin releases page (https://releases.xamarin.com) there is one already, 15.4, which we’ll roll out this weekend (as usual), and with this we’d also update the “previous” stack so it’d have Xcode 9 too (but with Xamarin 15.3 instead of 15.4).

Based on what you wrote I’m not sure if this would have been a good fit for your use case. The first Xcode 9 version was the Xamarin (stable) version 15.3.5 which was released on SEPTEMBER 19, 2017 (https://releases.xamarin.com/stable-release-15-3-5-with-xcode-9-support/) and the 15.4 update was released yesterday (https://releases.xamarin.com/stable-release-15-4/), about 3 weeks after, which is at the lower end of your 2-10 weeks migration period.

Would that be enough for you @benrnz-sv ?

Its better than 1 week notice :slight_smile:.
I don’t really see the point of having the last minor version increment, its very unlikely that a minor point update for VS4Mac will cause issues. Its far more likely to cause issues with major version upgrades to XCode and the Android SDK. I’d suggest keeping the last edge stack for the previous XCode and combined with the same for the Android SDK.

Sorry to be a pain, but I’m looking at this from a risk mitigation point of view, and I’d rather have a plan for the bigger risks than the smaller ones.


1 Like

Sure, no problem at all, thanks for your feedback, it’ll help us a lot to figure out the right strategy / policy! :slight_smile:

1 Like