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