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