Stack update policy

Stacks on are generally updated every weekend, but what’s updated depends on the stack. There are stacks where only certain caches are updated and there are stacks which are completely re-built every week. Check out our Stacks in our system reports Github site.

Xcode stack updates

We use two types of Xcode stacks on Bitrise: Stable stacks and Edge stacks.

  • Xcode Stable stacks are built when a new minor version of a major Xcode version comes out. For example, Xcode 12.5.x has its own stable stack. These stacks are only updated with Xcode patch versions, Bitrise CLI related updates, dependency manager cache updates and with critical fixes. These stacks are designed so that if a build worked on the stack, the same build should run the same way as long as the stack is available.

  • The Xcode Edge stack is re-built every week. It includes the latest stable release of Xcode, the same pre-installed tools as on the Stable stack, and the dependency manager cache updates. The stack uses the same scripts we use for creating new Xcode stacks.

Pinning an Xcode version

Whenever a new Xcode version comes out, our aim is to provide it to our users as soon as possible. But we do not update existing stable stacks with a new Xcode version as that could potentially break builds: instead, we provide a new stack with the new version, and keep maintaining the older versions.

About dependency manager cache updates

All of the macOS stacks receive a dependency manager cache update (brew, cocoapods and bitrise CLI) every week. These cache updates do not change the pre-installed tool versions, they only update the package manager caches for faster dependency installs.

The Android & Docker stacks

The Android / Linux stacks are prepared with docker, using multiple separate docker images, built on top of each other. You can find these docker images on GitHub.

  • The Android & Docker, on Ubuntu stack is a rolling release stack, rebuilt automatically from a base Ubuntu image.

  • The Android & Docker, on Ubuntu - LTS Stack image is a “frozen” version of a previous rolling release image, and is not updated at all (except with Bitrise CLI related updates and with critical fixes).

The Visual Studio for Mac stacks

The Visual Studio for Mac stacks are built on top of the latest Stable Xcode stack, so the preinstalled building tools of the base Xcode stack are not updated and are the same as in the base Xcode stack. The Xamarin specific bits are applied on top of the base Xcode image every week when generating the Visual Studio for Mac stacks (using this Ansible playbook).

The dependency manager cache updates are applied on these stacks too. Visual Studio for Mac stacks are upgraded to the latest Visual Studio for Mac versions on every weekend.

This means that the Visual Studio for Mac stacks are hybrid stacks, built on a Stable base Xcode stack, but applying certain Visual Studio for Mac- and Xamarin-specific bits and updates every week.

Altogether we have three Hybrid stacks:

  • The Visual Studio for Mac, Stable channel and the Visual Studio for Mac, Beta channel Stacks are updated every weekend with the current Visual Studio 4 Mac Stable and Beta releases.

  • The Previous Visual Studio for Mac, Stable channel is kept on the previous version of Visual Studio for Mac.