Skip to content

Commit 2ffcb2b

Browse files
committed
fix: package Bun for Device Farm Harness runs
1 parent 3236d5a commit 2ffcb2b

3 files changed

Lines changed: 111 additions & 3 deletions

File tree

.github/workflows/harness-aws-device.yml

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,8 @@ env:
7373
HARNESS_IOS_HARNESS_XCTEST_RUNNER_IPA_ARTIFACT_NAME: harness-xctest-agent-ipa
7474
HARNESS_IOS_HARNESS_XCTEST_RUNNER_IPA_PATH: apps/simple-camera/ios/build/devicefarm/HarnessXCTestAgentUITests.ipa
7575
HARNESS_IOS_XCTEST_UI_TEST_PACKAGE_OUTPUT: apps/simple-camera/ios/build/devicefarm/HarnessXCTestUITestPackage.zip
76+
HARNESS_IOS_BUN_ARTIFACT_NAME: harness-ios-bun
77+
HARNESS_IOS_BUN_ARTIFACT_PATH: apps/simple-camera/ios/build/devicefarm/bun/bun
7678
HARNESS_DEVICE_FARM_REPO_ARCHIVE_NAME: react-native-vision-camera.zip
7779
HARNESS_ANDROID_DEVICE_FARM_TEST_PACKAGE_OUTPUT: apps/simple-camera/android/build/devicefarm/AndroidTestPackage.zip
7880
HARNESS_ANDROID_BUNDLE_ID: com.margelo.nitro.camera.example.simple
@@ -218,6 +220,8 @@ jobs:
218220
with:
219221
fetch-depth: 1
220222

223+
- uses: oven-sh/setup-bun@v2
224+
221225
- name: Download Android app artifact
222226
uses: actions/download-artifact@v8
223227
with:
@@ -242,6 +246,18 @@ jobs:
242246
--output "$PACKAGE_PATH" \
243247
HEAD
244248
249+
BUN_BIN="$(command -v bun)"
250+
BUN_PACKAGE_ROOT="$(mktemp -d)"
251+
mkdir -p "$BUN_PACKAGE_ROOT/.devicefarm/bin"
252+
cp "$BUN_BIN" "$BUN_PACKAGE_ROOT/.devicefarm/bin/bun"
253+
chmod +x "$BUN_PACKAGE_ROOT/.devicefarm/bin/bun"
254+
"$BUN_PACKAGE_ROOT/.devicefarm/bin/bun" --version
255+
256+
(
257+
cd "$BUN_PACKAGE_ROOT"
258+
zip -qry "$GITHUB_WORKSPACE/$PACKAGE_PATH" .devicefarm
259+
)
260+
245261
unzip -tq "$PACKAGE_PATH"
246262
247263
- name: Verify Android Device Farm test package
@@ -473,6 +489,26 @@ jobs:
473489
if-no-files-found: error
474490
retention-days: 7
475491

492+
- name: Stage Bun runtime for Device Farm
493+
run: |
494+
set -euo pipefail
495+
496+
BUN_BIN="$(command -v bun)"
497+
BUN_RUNTIME="${{ env.HARNESS_IOS_BUN_ARTIFACT_PATH }}"
498+
499+
mkdir -p "$(dirname "$BUN_RUNTIME")"
500+
cp "$BUN_BIN" "$BUN_RUNTIME"
501+
chmod +x "$BUN_RUNTIME"
502+
"$BUN_RUNTIME" --version
503+
504+
- name: Upload Bun runtime artifact
505+
uses: actions/upload-artifact@v7
506+
with:
507+
name: ${{ env.HARNESS_IOS_BUN_ARTIFACT_NAME }}
508+
path: ${{ env.HARNESS_IOS_BUN_ARTIFACT_PATH }}
509+
if-no-files-found: error
510+
retention-days: 7
511+
476512
test-ios:
477513
name: Test iOS
478514
runs-on: ubuntu-latest
@@ -498,6 +534,12 @@ jobs:
498534
name: ${{ env.HARNESS_IOS_HARNESS_XCTEST_RUNNER_IPA_ARTIFACT_NAME }}
499535
path: ${{ env.HARNESS_PROJECT_ROOT }}/ios/build/devicefarm
500536

537+
- name: Download Bun runtime artifact
538+
uses: actions/download-artifact@v8
539+
with:
540+
name: ${{ env.HARNESS_IOS_BUN_ARTIFACT_NAME }}
541+
path: ${{ env.HARNESS_PROJECT_ROOT }}/ios/build/devicefarm/bun
542+
501543
- name: Verify iOS app artifact
502544
run: test -f ${{ env.HARNESS_IOS_APP_BUILD_OUTPUT }}
503545

@@ -512,6 +554,7 @@ jobs:
512554
PACKAGE_ROOT="$(mktemp -d)"
513555
REPO_ARCHIVE="$PACKAGE_ROOT/${{ env.HARNESS_DEVICE_FARM_REPO_ARCHIVE_NAME }}"
514556
RUNNER_IPA="$PACKAGE_ROOT/$(basename "${{ env.HARNESS_IOS_HARNESS_XCTEST_RUNNER_IPA_PATH }}")"
557+
BUN_BIN="${{ env.HARNESS_IOS_BUN_ARTIFACT_PATH }}"
515558
516559
rm -f "$PACKAGE_PATH"
517560
mkdir -p "$(dirname "$PACKAGE_PATH")"
@@ -521,6 +564,17 @@ jobs:
521564
--output "$REPO_ARCHIVE" \
522565
HEAD
523566
567+
if [[ -f "$BUN_BIN" ]]; then
568+
BUN_PACKAGE_ROOT="$(mktemp -d)"
569+
mkdir -p "$BUN_PACKAGE_ROOT/.devicefarm/bin"
570+
cp "$BUN_BIN" "$BUN_PACKAGE_ROOT/.devicefarm/bin/bun"
571+
chmod +x "$BUN_PACKAGE_ROOT/.devicefarm/bin/bun"
572+
(
573+
cd "$BUN_PACKAGE_ROOT"
574+
zip -qry "$REPO_ARCHIVE" .devicefarm
575+
)
576+
fi
577+
524578
cp "${{ env.HARNESS_IOS_HARNESS_XCTEST_RUNNER_IPA_PATH }}" "$RUNNER_IPA"
525579
526580
(

apps/simple-camera/device-farm-tests/AwsTestSpec.yml

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,36 @@ phases:
77
commands:
88
- devicefarm-cli use node 20
99
- node -v
10-
- curl -fsSL https://bun.com/install | bash
11-
- ~/.bun/bin/bun install
10+
- |
11+
set -euo pipefail
12+
13+
install_bun() {
14+
if [ -f ".devicefarm/bin/bun" ]; then
15+
mkdir -p "$HOME/.bun/bin"
16+
cp ".devicefarm/bin/bun" "$HOME/.bun/bin/bun"
17+
chmod +x "$HOME/.bun/bin/bun"
18+
if "$HOME/.bun/bin/bun" --version; then
19+
return 0
20+
fi
21+
rm -f "$HOME/.bun/bin/bun"
22+
fi
23+
24+
for attempt in 1 2 3; do
25+
if curl -fsSL https://bun.com/install | bash; then
26+
"$HOME/.bun/bin/bun" --version
27+
return 0
28+
fi
29+
30+
if [ "$attempt" -eq 3 ]; then
31+
return 1
32+
fi
33+
34+
sleep "$((attempt * 5))"
35+
done
36+
}
37+
38+
install_bun
39+
- ~/.bun/bin/bun install --frozen-lockfile
1240

1341
- adb wait-for-device
1442
- adb devices -l

apps/simple-camera/device-farm-tests/AwsTestSpecIOS.yml

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ phases:
88
- devicefarm-cli use node 20
99
- node -v
1010
- xcodebuild -version
11-
- curl -fsSL https://bun.com/install | bash
1211
- xcrun devicectl list devices
1312

1413
# The XCTEST_UI package contains the Harness XCTest runner IPA and a
@@ -25,6 +24,33 @@ phases:
2524
unzip -q "$REPO_ARCHIVE" -d "$HARNESS_REPO_ROOT"
2625
2726
cd "$HARNESS_REPO_ROOT"
27+
28+
install_bun() {
29+
if [ -f ".devicefarm/bin/bun" ]; then
30+
mkdir -p "$HOME/.bun/bin"
31+
cp ".devicefarm/bin/bun" "$HOME/.bun/bin/bun"
32+
chmod +x "$HOME/.bun/bin/bun"
33+
if "$HOME/.bun/bin/bun" --version; then
34+
return 0
35+
fi
36+
rm -f "$HOME/.bun/bin/bun"
37+
fi
38+
39+
for attempt in 1 2 3; do
40+
if curl -fsSL https://bun.com/install | bash; then
41+
"$HOME/.bun/bin/bun" --version
42+
return 0
43+
fi
44+
45+
if [ "$attempt" -eq 3 ]; then
46+
return 1
47+
fi
48+
49+
sleep "$((attempt * 5))"
50+
done
51+
}
52+
53+
install_bun
2854
~/.bun/bin/bun install --frozen-lockfile
2955
3056
test:

0 commit comments

Comments
 (0)