1--- 2title: Build server infrastructure 3sidebar_title: Server infrastructure 4maxHeadingDepth: 4 5--- 6 7import { Collapsible } from '~/ui/components/Collapsible'; 8 9> This document describes the current build infrastructure as of **June 27, 2022**. It is likely to change over time, and this document will be updated. 10 11## Worker IP addresses 12 13Here is the [up-to-date list of worker IP addresses](https://expo.dev/eas-build-worker-ips.txt). 14 15## Configuring build environment 16 17Images for each platform have one specific version of Node.js, yarn, CocoaPods, Xcode, Ruby, Fastlane, and so on. You can override some of the versions in [eas.json](/build/eas-json). 18If there is no dedicated configuration option you're looking for, you can use [npm hooks](npm-hooks) to install or update any system dependencies with `apt-get` or `brew`. Please take into account that those customizations are applied during the build and will increase your build times. 19 20When selecting an image for the build you can use the full name provided below or one of the aliases: `default`, `latest`. 21 22- The use of a specific name guarantees the consistent environment with only minor updates. 23- `default` alias will be assigned to the environment that most closely resembles the configuration used for Expo SDK development. 24- `latest` alias will be assigned to the image with the most up to date versions of the software. 25 26> **info** **Note:** If you do not provide `image` in **eas.json**, your build will use `default` image. However, in some cases, we select a more appropriate image based on the Expo SDK version or React Native version. 27> You can check what image is used for a build in the "Spin up build environment" build logs section. 28 29## Android build server configurations 30 31Android workers run on Kubernetes in an isolated environment. Every build gets its own container running on a dedicated Kubernetes node: 32 33- Build resources: 4 CPU, 12 GB RAM 34- [npm cache deployed with Kubernetes](caching/#javascript-dependencies) 35- [Maven cache deployed with Kubernetes](caching/#android-dependencies) 36- Global Gradle configuration in **~/.gradle/gradle.properties**: 37 38 ```ini ~/.gradle/gradle.properties 39 org.gradle.jvmargs=-Xmx14g -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 40 org.gradle.parallel=true 41 org.gradle.configureondemand=true 42 org.gradle.daemon=false 43 ``` 44 45- Global npm configuration in **~/.npmrc**: 46 47 ```ini ~/.npmrc 48 registry=http://npm-cache-service.worker-infra-production.svc.cluster.local:4873 49 ``` 50 51- Global Yarn configuration in **~/.yarnrc.yml**: 52 53 ```yml ~/.yarnrc.yml 54 unsafeHttpWhitelist: 55 - '*' 56 npmRegistryServer: 'http://npm-cache-service.worker-infra-production.svc.cluster.local:4873' 57 enableImmutableInstalls: false 58 ``` 59 60### Android server images 61 62#### `ubuntu-22.04-jdk-11-ndk-r21e` (alias `latest`) 63 64<Collapsible summary="Details"> 65 66- Docker image: `ubuntu:jammy-20220531` 67- NDK 21.4.7075529 68- Node.js 16.18.1 69- Yarn 1.22.17 70- pnpm 7.0.0 71- npm 8.19.2 72- Java 11 73 74</Collapsible> 75 76#### `ubuntu-22.04-jdk-8-ndk-r21e` 77 78<Collapsible summary="Details"> 79 80- Docker image: `ubuntu:jammy-20220531` 81- NDK 21.4.7075529 82- Node.js 16.18.1 83- Yarn 1.22.17 84- pnpm 7.0.0 85- npm 8.19.2 86- Java 8 87 88</Collapsible> 89 90#### `ubuntu-20.04-jdk-11-ndk-r21e` (alias `default`) 91 92<Collapsible summary="Details"> 93 94- Docker image: `ubuntu:focal-20210921` 95- NDK 21.4.7075529 96- Node.js 16.18.1 97- Yarn 1.22.17 98- pnpm 7.0.0 99- npm 8.19.2 100- Java 11 101 102</Collapsible> 103 104#### `ubuntu-20.04-jdk-8-ndk-r21e` 105 106<Collapsible summary="Details"> 107 108- Docker image: `ubuntu:focal-20210921` 109- NDK 21.4.7075529 110- Node.js 16.18.1 111- Yarn 1.22.17 112- pnpm 7.0.0 113- npm 8.19.2 114- Java 8 115 116</Collapsible> 117 118#### `ubuntu-18.04-jdk-11-ndk-r19c` 119 120<Collapsible summary="Details"> 121 122- Docker image: `ubuntu:bionic-20210930` 123- NDK 19.2.5345600 124- Node.js 16.18.1 125- Yarn 1.22.17 126- pnpm 7.0.0 127- npm 8.19.2 128- Java 11 129 130</Collapsible> 131 132#### `ubuntu-18.04-jdk-8-ndk-r19c` 133 134<Collapsible summary="Details"> 135 136- Docker image: `ubuntu:bionic-20210930` 137- NDK 19.2.5345600 138- Node.js 16.18.1 139- Yarn 1.22.17 140- pnpm 7.0.0 141- npm 8.19.2 142- Java 8 143 144</Collapsible> 145 146## iOS build server configurations 147 148iOS worker VMs run on Mac Mini 8.1 hosts in an isolated environment. Every build gets its own fresh macOS VM: 149 150- Hardware: Intel(R) Core(TM) i7-8700B CPU (6 cores/12 threads), 64 GB RAM 151- Build resource limits: 3 cores, 12 GB RAM 152- [npm cache](caching/#javascript-dependencies) 153- [CocoaPods cache](caching/#ios-dependencies) 154- [`cocoapods-nexus-plugin`](https://github.com/expo/eas-build/tree/main/packages/cocoapods-nexus-plugin) 155- Global npm configuration in **~/.npmrc**: 156 157 ```ini ~/.npmrc 158 registry=http://10.254.24.9:4873 159 ``` 160 161- Global Yarn configuration in **~/.yarnrc.yml**: 162 163 ```yml ~/.yarnrc.yml 164 unsafeHttpWhitelist: 165 - '*' 166 npmRegistryServer: 'registry=http://10.254.24.9:4873' 167 enableImmutableInstalls: false 168 ``` 169 170### iOS server images 171 172#### `macos-monterey-12.6-xcode-14.1` (alias `latest`) 173 174<Collapsible summary="Details"> 175 176- macOS Monterey 12.6 177- Xcode 14.1 (14B47b) 178- Node.js 16.18.1 179- Yarn 1.22.17 180- pnpm 7.15.0 181- npm 8.19.2 182- fastlane 2.210.1 183- CocoaPods 1.11.3 184- Ruby 2.7 185 186</Collapsible> 187 188#### `macos-monterey-12.6-xcode-14.0` (alias `default`) 189 190<Collapsible summary="Details"> 191 192- macOS Monterey 12.6 193- Xcode 14.0 (14A309) 194- Node.js 16.18.1 195- Yarn 1.22.17 196- pnpm 7.11.0 197- npm 8.19.2 198- fastlane 2.210.0 199- CocoaPods 1.11.3 200- Ruby 2.7 201 202</Collapsible> 203 204#### `macos-monterey-12.4-xcode-13.4` 205 206<Collapsible summary="Details"> 207 208- macOS Monterey 12.4 209- Xcode 13.4 (13F17a) 210- Node.js 16.18.1 211- Yarn 1.22.17 212- pnpm 7.0.0 213- npm 8.19.2 214- fastlane 2.205.2 215- CocoaPods 1.11.3 216- Ruby 2.7 217 218</Collapsible> 219 220#### `macos-big-sur-11.4-xcode-13.0` 221 222<Collapsible summary="Details"> 223 224- macOS Big Sur 11.4 225- Xcode 13.0 (13A233) 226- Node.js 16.18.1 227- Yarn 1.22.17 228- pnpm 7.0.0 229- npm 8.19.2 230- fastlane 2.185.1 231- CocoaPods 1.10.1 232- Ruby 2.7 233 234</Collapsible> 235 236#### `macos-monterey-12.3-xcode-13.3` (deprecated) 237 238<Collapsible summary="Details"> 239 240- macOS Monterey 12.3.1 241- Xcode 13.3.1 (13E500a) 242- Node.js 16.18.1 243- Yarn 1.22.17 244- pnpm 7.0.0 245- npm 8.19.2 246- fastlane 2.205.2 247- CocoaPods 1.11.3 248- Ruby 2.7 249 250</Collapsible> 251 252#### `macos-monterey-12.1-xcode-13.2` (deprecated) 253 254<Collapsible summary="Details"> 255 256- macOS Monterey 12.1 257- Xcode 13.2.1 (13C100) 258- Node.js 16.18.1 259- Yarn 1.22.17 260- pnpm 7.0.0 261- npm 8.19.2 262- fastlane 2.201.0 263- CocoaPods 1.11.2 264- Ruby 2.7 265 266</Collapsible> 267 268#### `macos-big-sur-11.4-xcode-12.5` (deprecated) 269 270<Collapsible summary="Details"> 271 272- macOS Big Sur 11.4 273- Xcode 12.5 (12E5244e) 274- Node.js 16.18.1 275- Yarn 1.22.17 276- pnpm 7.0.0 277- npm 8.19.2 278- fastlane 2.185.1 279- CocoaPods 1.10.1 280- Ruby 2.7 281 282</Collapsible> 283