GitHub

Virtual machines

Last updated on 2020-05-05

On bitrise.io, we have macOS and Linux virtual machines hosted for your builds. You can select from multiple stacks, each with its own list of preinstalled tool versions. Read more about available stacks and stack prepare types in the Available Stacks docs.

The user account that is used for the builds is configured to have passwordless sudo enabled. This way you are able to install all the extra things you need for your builds and for other automation. If a tool is not preinstalled on your Stack of choice, you can install it yourself - see the Install Any Additional Tool guide.

Security

Every build runs in its own virtual machine and the virtual machine is rolled back to a saved state, the “base box” state, after the build is finished. This way your builds are always protected by changes made by others and by your previous builds and you can use a stable environment to define your build workflow, since no state persists between builds.

For more information about build and code security, see the Code security guide.

Network configuration for the virtual machines

For most users, who host their repositories on cloud-based service providers, there is no need for any network configuration to be able to use Bitrise. All we need is permission to access the repository and for that, an SSH key is enough.

However, your company security policy might not allow unknown and unauthorized IP addresses to communicate with the servers where your code is being stored - either on your own datacenter or in a private cloud. In that case, Bitrise won’t work unless the relevant IP addresses are whitelisted.

Whitelisting build machine IPs

Our datacenters are behind a set of public static IP addresses, with the virtual machines having their own internal subnets behind these addresses. You need to whitelist the public IP addresses that you can find in External and internal IP addresses.

Please note that the different stack types have different public IPs. If, for example, you only use the Xcode stacks, there is no need to whitelist the IPs belonging to the Linux/Docker environments.

Configuring your network for VPNs

You can connect to Bitrise via VPN - but it can cause a conflict if your local network uses the same address space as our build VMs. In such a case, the VPN may detect a clash and return an error. In this case, the only solution is to re-configure your local address space to use different subnets than our virtual machines. You can find the build VM internal address subnets in External and internal IP addresses.

External and internal IP addresses

Stack type Public IP Build VM internal subnet Note
Xcode and VS4Mac stacks 208.52.166.154 10.200.15.0/20  
  207.254.0.248/29 10.246.15.0/20 The public address is a subnet: the entire subnet must be whitelisted!
  207.254.34.148 10.254.228.0/20  
Linux/Docker stacks 104.197.15.74 10.0.0.0/9  
  35.202.121.43 10.0.0.0/9  
  35.237.165.17 10.0.0.0/9  
  35.231.56.118 10.0.0.0/9  

Storage space

Our virtual machines have different amounts of free space to use, depending on the stack type. The table summarises the data - please keep in mind that these numbers are subject to change, as different versions of pre-installed tools and resources take up a varying amount of space on the machines.

Stack Name Filesystem Size (GB) Free (GB)
linuxandroidlts /dev/loop0 160 113
linuxandroidlts /dev/sda1(bitrise) 194 28
linuxandroid /dev/loop0 160 130
linuxandroid /dev/sda1(bitrise) 194 28
vs4mac-beta /dev/disk1s5 200 50
vs4mac-pre /dev/disk1s1 200 32
vs4mac-stable /dev/disk1s5 200 51
xcode-10.1.x /dev/disk0s2 199 61
xcode-10.2.x /dev/disk1s1 200 61
xcode-10.3.x /dev/disk1s1 200 60
xcode-11.0.x /dev/disk1s1 200 50
xcode-11.1.x /dev/disk1s1 200 48
xcode-11.2.x /dev/disk1s1 200 23
xcode-11.3.x /dev/disk1s1 200 25
xcode-11.4.x /dev/disk1s5 200 50
xcode-9.4.x /dev/disk0s2 199 55
xcode-edge /dev/disk1s5 200 59

Freeing up disk space

If you need additional disk space, you can always delete tools and resources that you do not use. For example, if your app does not need Android SDK tools, you can remove them. Just add a Script Step to your Workflow with the appropriate commands:

sudo rm -rf ~/Library/Developer/Xamarin/android-sdk-macosx
sudo rm -rf /usr/local/share/android-sdk 
sudo rm -rf /opt/android-ndk`

Similarly, feel free to delete iOS simulators that you do not use:

sudo rm -rf /Library/Developer/CoreSimulator/Profiles/Runtimes/iOS\\ 10.3.simruntime/

Customization

You can find the macOS base box setup guide and automation scripts we use for building our macOS virtual machine base boxes in our OS X Box Bootstrap repository. The repository includes every script we use for preparing these base virtual machine images.

For our Linux machines, check out the Bitrise Base Docker Image’s repository.

System reports

You can always check our current configurations in the system reports folder of our main repository, to see what tools and which versions are preinstalled. These reports have been generated by the scripts, linked in the first lines of the report.

The repositories used for our virtual machine preparation are open source, and pull requests are welcome. If you’d like to have a tool pre-installed in our machines, feel free to add your changes and they will be included in the related Stack(s) the next time the Stack is updated.

Virtual machine updates

Updates are always announced in the #changelog category of discuss.bitrise.io and can be seen on your Bitrise Dashboard. We will also send you a Platform Updates notification about significant changes, unless you disable this feature under your account settings page.

Stack updates

In general we do stack updates once a week, during the weekends.

Minor patches might be applied during the week in case we detect an issue with the current virtual machine environment. These patches do not change any pre-installed tool version, unless it’s really necessary.

We test every stack change as much as we can before it is released to avoid any changes / updates during the week.

iOS Simulator version & SDK support

All the iOS Simulator versions (which can be installed through Xcode, Preferences, Components) are installed and available.