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.
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||184.108.40.206||10.200.15.0/20|
|220.127.116.11/29||10.246.15.0/20||The public address is a subnet: the entire subnet must be whitelisted!|
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)|
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/
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.
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.