Skip to content

Commit ff84aea

Browse files
committed
feat(INFRA-2821): use android from runner
1 parent b97d618 commit ff84aea

1 file changed

Lines changed: 76 additions & 125 deletions

File tree

.github/actions/setup-e2e-env/action.yml

Lines changed: 76 additions & 125 deletions
Original file line numberDiff line numberDiff line change
@@ -32,18 +32,6 @@ inputs:
3232
description: Xcode version to select (e.g., 16.2)
3333
required: false
3434
default: '16.2'
35-
jdk-version:
36-
description: JDK version to use (only for Android)
37-
required: false
38-
default: '17'
39-
jdk-distribution:
40-
description: JDK distribution to use (only for Android)
41-
required: false
42-
default: 'temurin'
43-
ndk-version:
44-
description: NDK version to use (only for Android)
45-
required: false
46-
default: '26.1.10909125'
4735
foundry-version:
4836
description: Foundry version to install
4937
required: false
@@ -89,6 +77,82 @@ runs:
8977
with:
9078
node-version: ${{ inputs.node-version }}
9179

80+
## Android Setup - Minimal (Runner handles SDK/NDK) ##
81+
82+
- name: Configure Android Signing Certificates
83+
if: ${{ inputs.platform == 'android' && inputs.configure-keystores == 'true' }}
84+
uses: MetaMask/github-tools/.github/actions/configure-keystore@e2e-env-actions
85+
with:
86+
aws-role-to-assume: ${{ inputs.keystore-role-to-assume }}
87+
aws-region: 'us-east-2'
88+
platform: 'android'
89+
environment: ${{ inputs.environment }}
90+
91+
- name: Setup Android environment variables
92+
if: ${{ inputs.platform == 'android' }}
93+
run: |
94+
echo "Adding emulator to PATH if needed..."
95+
echo "PATH=${PATH}:${ANDROID_SDK_ROOT}/emulator" >> "$GITHUB_ENV"
96+
shell: bash
97+
98+
- name: Fix Android SDK permissions and NDK inconsistencies
99+
if: ${{ inputs.platform == 'android' }}
100+
run: |
101+
echo "Fixing permissions on Android SDK directory..."
102+
sudo chown -R $USER:$USER ${ANDROID_SDK_ROOT}
103+
sudo chmod -R 755 ${ANDROID_SDK_ROOT}
104+
105+
echo "Resolving NDK directory inconsistencies..."
106+
cd ${ANDROID_SDK_ROOT}/ndk
107+
for major in 26 27 28; do
108+
if [ -L "$major" ]; then
109+
echo "Removing symlink for major version $major"
110+
rm -f "$major"
111+
fi
112+
# Optionally, rename full version dir back if needed, but assuming it's already in place
113+
done
114+
echo "✅ NDK directories fixed"
115+
shell: bash
116+
117+
## Launch AVD
118+
119+
- name: Set ANDROID_AVD_HOME for downstream steps
120+
if: ${{ inputs.platform == 'android'}}
121+
shell: bash
122+
run: |
123+
echo "ANDROID_AVD_HOME=$HOME/.android/avd" >> "$GITHUB_ENV"
124+
mkdir -p "$HOME/.android/avd"
125+
126+
- name: Install system image for emulator
127+
if: ${{ inputs.platform == 'android'}}
128+
run: |
129+
echo "Installing system image for emulator..."
130+
IMAGE="system-images;android-${{ inputs.android-api-level }};google_apis;${{ inputs.android-abi }}"
131+
echo "Installing: $IMAGE"
132+
133+
"${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager" "$IMAGE"
134+
135+
echo "✅ System image installed"
136+
shell: bash
137+
138+
- name: Create Android Virtual Device (AVD)
139+
if: ${{ inputs.platform == 'android'}}
140+
run: |
141+
IMAGE="system-images;android-${{ inputs.android-api-level }};google_apis;${{ inputs.android-abi }}"
142+
echo "Creating AVD with image: $IMAGE"
143+
144+
# List available system images for debugging
145+
echo "Available system images:"
146+
"${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/sdkmanager" --list | grep "system-images" | head -10
147+
148+
echo "no" | "${ANDROID_SDK_ROOT}/cmdline-tools/latest/bin/avdmanager" create avd \
149+
--name "${{ inputs.android-avd-name }}" \
150+
--package "$IMAGE" \
151+
--device "${{ inputs.android-device }}"
152+
153+
echo "✅ AVD created successfully"
154+
shell: bash
155+
92156
## Yarn Setup & Cache Management
93157

94158
- name: Corepack
@@ -213,116 +277,3 @@ runs:
213277
if: ${{ inputs.platform == 'ios' }}
214278
run: xcrun simctl list devices
215279
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-
shell: bash
287-
288-
- name: Install Android NDK
289-
if: ${{ inputs.platform == 'android' }}
290-
run: |
291-
"$ANDROID_HOME/cmdline-tools/latest/bin/sdkmanager" "ndk;${{ inputs.ndk-version }}"
292-
shell: bash
293-
294-
- name: Add Android tools to PATH
295-
if: ${{ inputs.platform == 'android' }}
296-
run: |
297-
echo "$ANDROID_HOME/platform-tools" >> "$GITHUB_PATH"
298-
echo "$ANDROID_HOME/emulator" >> "$GITHUB_PATH"
299-
echo "$ANDROID_HOME/cmdline-tools/latest/bin" >> "$GITHUB_PATH"
300-
shell: bash
301-
302-
- name: Add NDK related toolchains to PATH
303-
if: ${{ inputs.platform == 'android' }}
304-
run: |
305-
NDK_TOOLCHAIN="$ANDROID_SDK_ROOT/ndk/${{ inputs.ndk-version }}/toolchains/llvm/prebuilt/linux-x86_64/bin"
306-
echo "$NDK_TOOLCHAIN" >> "$GITHUB_PATH"
307-
echo "$ANDROID_SDK_ROOT/ndk/${{ inputs.ndk-version }}" >> "$GITHUB_PATH"
308-
shell: bash
309-
310-
## Launch AVD
311-
312-
- name: Set ANDROID_AVD_HOME for downstream steps
313-
if: ${{ inputs.platform == 'android'}}
314-
shell: bash
315-
run: |
316-
echo "ANDROID_AVD_HOME=$HOME/.android/avd" >> "$GITHUB_ENV"
317-
mkdir -p "$HOME/.android/avd"
318-
319-
- name: Create Android Virtual Device (AVD)
320-
if: ${{ inputs.platform == 'android'}}
321-
run: |
322-
IMAGE="system-images;android-${{ inputs.android-api-level }};google_apis;${{ inputs.android-abi }}"
323-
echo "Creating AVD with image: $IMAGE"
324-
echo "no" | "${ANDROID_HOME}/cmdline-tools/latest/bin/avdmanager" create avd \
325-
--name "${{ inputs.android-avd-name }}" \
326-
--package "$IMAGE" \
327-
--device "${{ inputs.android-device }}"
328-
shell: bash

0 commit comments

Comments
 (0)