@@ -84,132 +84,6 @@ runs:
8484 - run : echo "Setup E2E Environment started"
8585 shell : bash
8686
87- # # Android Setup (early for fail-fast) ##
88-
89- # Set Android environment variables (self-hosted runner has SDK pre-installed)
90- - name : Set Android environment variables
91- if : ${{ inputs.platform == 'android' }}
92- run : |
93- echo "ANDROID_HOME=/opt/android-sdk" >> "$GITHUB_ENV"
94- echo "ANDROID_SDK_ROOT=/opt/android-sdk" >> "$GITHUB_ENV"
95- shell : bash
96-
97- - name : Configure Android Signing Certificates
98- if : ${{ inputs.platform == 'android' && inputs.configure-keystores == 'true' }}
99- uses : MetaMask/github-tools/.github/actions/configure-keystore@e2e-env-actions
100- with :
101- aws-role-to-assume : ${{ inputs.keystore-role-to-assume }}
102- aws-region : ' us-east-2'
103- platform : ' android'
104- environment : ${{ inputs.environment }}
105-
106- # # JDK Setup
107- - name : Setup Java
108- if : ${{ inputs.platform == 'android' }}
109- uses : actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00
110- with :
111- java-version : ${{ inputs.jdk-version }}
112- distribution : ${{ inputs.jdk-distribution }}
113-
114- - name : Install required emulator dependencies
115- if : ${{ inputs.platform == 'android' && runner.os == 'Linux' }}
116- run : |
117- sudo apt-get update
118- sudo apt-get install -y \
119- libpulse0 \
120- libglu1-mesa \
121- libnss3 \
122- libxss1
123-
124- echo "✅ Linux dependencies installed successfully"
125- shell : bash
126-
127- # # Android SDK Setup
128-
129- - name : Install Android SDK packages
130- if : ${{ inputs.platform == 'android' }}
131- run : |
132- echo "Accepting SDK licenses..."
133- printf 'y\n%.0s' {1..10} | "/opt/android-sdk/cmdline-tools/latest/bin/sdkmanager" --licenses
134-
135- echo "Installing Android SDK components..."
136- "/opt/android-sdk/cmdline-tools/latest/bin/sdkmanager" --install \
137- "platform-tools" \
138- "platforms;android-${{ inputs.android-api-level }}" \
139- "build-tools;34.0.0" \
140- "emulator" \
141- "system-images;android-${{ inputs.android-api-level }};google_apis;${{ inputs.android-abi }}"
142-
143- echo "Updating SDK packages..."
144- "/opt/android-sdk/cmdline-tools/latest/bin/sdkmanager" --update
145-
146- echo "✅ Android SDK packages installed successfully"
147- shell : bash
148-
149- # # NDK Setup
150-
151- - name : Debug Android SDK Paths
152- if : ${{ inputs.platform == 'android' }}
153- run : |
154- echo "ANDROID_HOME: $ANDROID_HOME"
155- echo "ANDROID_SDK_ROOT: $ANDROID_SDK_ROOT"
156- shell : bash
157-
158- - name : Install Android NDK
159- if : ${{ inputs.platform == 'android' }}
160- run : |
161- "/opt/android-sdk/cmdline-tools/latest/bin/sdkmanager" "ndk;${{ inputs.ndk-version }}"
162- shell : bash
163-
164- - name : Add Android tools to PATH
165- if : ${{ inputs.platform == 'android' }}
166- run : |
167- echo "/opt/android-sdk/platform-tools" >> "$GITHUB_PATH"
168- echo "/opt/android-sdk/emulator" >> "$GITHUB_PATH"
169- echo "/opt/android-sdk/cmdline-tools/latest/bin" >> "$GITHUB_PATH"
170- shell : bash
171-
172- - name : Add NDK related toolchains to PATH
173- if : ${{ inputs.platform == 'android' }}
174- run : |
175- NDK_TOOLCHAIN="/opt/android-sdk/ndk/${{ inputs.ndk-version }}/toolchains/llvm/prebuilt/linux-x86_64/bin"
176- echo "$NDK_TOOLCHAIN" >> "$GITHUB_PATH"
177- echo "/opt/android-sdk/ndk/${{ inputs.ndk-version }}" >> "$GITHUB_PATH"
178- shell : bash
179-
180- # # Launch AVD
181-
182- - name : Set ANDROID_AVD_HOME for downstream steps
183- if : ${{ inputs.platform == 'android'}}
184- shell : bash
185- run : |
186- echo "ANDROID_AVD_HOME=$HOME/.android/avd" >> "$GITHUB_ENV"
187- mkdir -p "$HOME/.android/avd"
188-
189- - name : Create Android Virtual Device (AVD)
190- if : ${{ inputs.platform == 'android'}}
191- run : |
192- IMAGE="system-images;android-${{ inputs.android-api-level }};google_apis;${{ inputs.android-abi }}"
193- echo "Creating AVD with image: $IMAGE"
194- echo "no" | "/opt/android-sdk/cmdline-tools/latest/bin/avdmanager" create avd \
195- --name "${{ inputs.android-avd-name }}" \
196- --package "$IMAGE" \
197- --device "${{ inputs.android-device }}"
198- shell : bash
199-
200- # # iOS Platform Setup ##
201-
202- - name : Configure iOS Signing Certificates
203- if : ${{ inputs.platform == 'ios' && inputs.configure-keystores == 'true' }}
204- uses : MetaMask/github-tools/.github/actions/configure-keystore@e2e-env-actions
205- with :
206- aws-role-to-assume : ${{ inputs.keystore-role-to-assume }}
207- aws-region : ' us-east-2'
208- platform : ' ios'
209- environment : ${{ inputs.environment }}
210-
211- # # Node.js & JavaScript Dependencies Setup ##
212-
21387 - name : Setup Node.js
21488 uses : actions/setup-node@v4
21589 with :
@@ -261,6 +135,14 @@ runs:
261135 "$FOUNDRY_BIN/foundryup"
262136
263137 # # IOS Setup ##
138+ - name : Configure iOS Signing Certificates
139+ if : ${{ inputs.platform == 'ios' && inputs.configure-keystores == 'true' }}
140+ uses : MetaMask/github-tools/.github/actions/configure-keystore@e2e-env-actions
141+ with :
142+ aws-role-to-assume : ${{ inputs.keystore-role-to-assume }}
143+ aws-region : ' us-east-2'
144+ platform : ' ios'
145+ environment : ${{ inputs.environment }}
264146
265147 # # Ruby Setup & Cache Management
266148 - name : Setup Ruby
@@ -331,3 +213,134 @@ runs:
331213 if : ${{ inputs.platform == 'ios' }}
332214 run : xcrun simctl list devices
333215 shell : bash
216+
217+ # # Android Setup ##
218+
219+ # # JDK Setup
220+ - name : Setup Java
221+ if : ${{ inputs.platform == 'android' }}
222+ uses : actions/setup-java@c5195efecf7bdfc987ee8bae7a71cb8b11521c00
223+ with :
224+ java-version : ${{ inputs.jdk-version }}
225+ distribution : ${{ inputs.jdk-distribution }}
226+
227+ - name : Configure Android Signing Certificates
228+ if : ${{ inputs.platform == 'android' && inputs.configure-keystores == 'true' }}
229+ uses : MetaMask/github-tools/.github/actions/configure-keystore@e2e-env-actions
230+ with :
231+ aws-role-to-assume : ${{ inputs.keystore-role-to-assume }}
232+ aws-region : ' us-east-2'
233+ platform : ' android'
234+ environment : ${{ inputs.environment }}
235+
236+ - name : Enable KVM group perms (Ubuntu only)
237+ if : ${{ inputs.platform == 'android' && runner.os == 'Linux' }}
238+ run : |
239+ echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
240+ sudo udevadm control --reload-rules
241+ sudo udevadm trigger --name-match=kvm
242+ shell : bash
243+
244+ # # Android SDK Setup
245+
246+ - name : Install required emulator dependencies
247+ if : ${{ inputs.platform == 'android' && runner.os == 'Linux' }}
248+ run : |
249+ sudo apt-get update
250+ sudo apt-get install -y \
251+ libpulse0 \
252+ libglu1-mesa \
253+ libnss3 \
254+ libxss1
255+
256+ echo "✅ Linux dependencies installed successfully"
257+ shell : bash
258+
259+ - name : Install Android SDK packages
260+ if : ${{ inputs.platform == 'android' }}
261+ run : |
262+ echo "Accepting SDK licenses..."
263+ printf 'y\n%.0s' {1..10} | "${ANDROID_HOME}/cmdline-tools/latest/bin/sdkmanager" --licenses
264+
265+ echo "Installing Android SDK components..."
266+ "${ANDROID_HOME}/cmdline-tools/latest/bin/sdkmanager" --install \
267+ "platform-tools" \
268+ "platforms;android-${{ inputs.android-api-level }}" \
269+ "build-tools;34.0.0" \
270+ "emulator" \
271+ "system-images;android-${{ inputs.android-api-level }};google_apis;${{ inputs.android-abi }}" \
272+
273+ echo "Updating SDK packages..."
274+ "${ANDROID_HOME}/cmdline-tools/latest/bin/sdkmanager" --update
275+
276+ echo "✅ Android SDK packages installed successfully"
277+ shell : bash
278+
279+ # # NDK Setup
280+
281+ - name : Debug Android SDK Paths
282+ if : ${{ inputs.platform == 'android' }}
283+ run : |
284+ echo "ANDROID_HOME: $ANDROID_HOME"
285+ echo "ANDROID_SDK_ROOT: $ANDROID_SDK_ROOT"
286+ echo "ANDROID_NDK_HOME: $ANDROID_NDK_HOME"
287+ echo "Available NDK versions:"
288+ ls -la "$ANDROID_SDK_ROOT/ndk/" || echo "NDK directory not found"
289+ shell : bash
290+
291+ - name : Add Android tools to PATH
292+ if : ${{ inputs.platform == 'android' }}
293+ run : |
294+ echo "$ANDROID_HOME/platform-tools" >> "$GITHUB_PATH"
295+ echo "$ANDROID_HOME/emulator" >> "$GITHUB_PATH"
296+ echo "$ANDROID_HOME/cmdline-tools/latest/bin" >> "$GITHUB_PATH"
297+ shell : bash
298+
299+ - name : Add NDK related toolchains to PATH
300+ if : ${{ inputs.platform == 'android' }}
301+ run : |
302+ # Use the NDK version that's available in the container
303+ # The container has symlinks for major versions (26, 27, 28)
304+ NDK_VERSION_TO_USE="${{ inputs.ndk-version }}"
305+ # Extract major version from input (e.g. 26.1.10909125 -> 26)
306+ NDK_MAJOR_VERSION=$(echo "$NDK_VERSION_TO_USE" | cut -d'.' -f1)
307+
308+ # Use the symlinked major version path from the container
309+ NDK_PATH="$ANDROID_SDK_ROOT/ndk/$NDK_MAJOR_VERSION"
310+
311+ if [ -d "$NDK_PATH" ]; then
312+ echo "Using NDK at: $NDK_PATH"
313+ NDK_TOOLCHAIN="$NDK_PATH/toolchains/llvm/prebuilt/linux-x86_64/bin"
314+ echo "$NDK_TOOLCHAIN" >> "$GITHUB_PATH"
315+ echo "$NDK_PATH" >> "$GITHUB_PATH"
316+
317+ # Set NDK environment variables for this job
318+ echo "ANDROID_NDK_HOME=$NDK_PATH" >> "$GITHUB_ENV"
319+ echo "ANDROID_NDK_ROOT=$NDK_PATH" >> "$GITHUB_ENV"
320+ echo "ANDROID_NDK=$NDK_PATH" >> "$GITHUB_ENV"
321+ else
322+ echo "Warning: NDK not found at $NDK_PATH"
323+ echo "Available NDK versions:"
324+ ls -la "$ANDROID_SDK_ROOT/ndk/" || echo "NDK directory not found"
325+ fi
326+ shell : bash
327+
328+ # # Launch AVD
329+
330+ - name : Set ANDROID_AVD_HOME for downstream steps
331+ if : ${{ inputs.platform == 'android'}}
332+ shell : bash
333+ run : |
334+ echo "ANDROID_AVD_HOME=$HOME/.android/avd" >> "$GITHUB_ENV"
335+ mkdir -p "$HOME/.android/avd"
336+
337+ - name : Create Android Virtual Device (AVD)
338+ if : ${{ inputs.platform == 'android'}}
339+ run : |
340+ IMAGE="system-images;android-${{ inputs.android-api-level }};google_apis;${{ inputs.android-abi }}"
341+ echo "Creating AVD with image: $IMAGE"
342+ echo "no" | "${ANDROID_HOME}/cmdline-tools/latest/bin/avdmanager" create avd \
343+ --name "${{ inputs.android-avd-name }}" \
344+ --package "$IMAGE" \
345+ --device "${{ inputs.android-device }}"
346+ shell : bash
0 commit comments