Skip to content

Commit 564f3ce

Browse files
committed
act and fixes
1 parent 1be24c4 commit 564f3ce

4 files changed

Lines changed: 106 additions & 26 deletions

File tree

.github/workflows/ci.yml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ on:
77
workflow_dispatch:
88
jobs:
99
cancel_previous:
10+
if: ${{ !env.ACT }}
1011
runs-on: ubuntu-latest
1112
steps:
1213
- uses: styfle/cancel-workflow-action@0.12.1
@@ -88,16 +89,15 @@ jobs:
8889
8990
run-e2e-android:
9091
runs-on: 'ubuntu-22.04'
91-
env:
92-
# Default to both minsdk and latest; override ANDROID_MATRIX env to narrow/expand if needed.
93-
ANDROID_MATRIX: >
94-
[
95-
{"name":"android-min","avd-name":"pixel_API21_x86_64","start-script":"start-android-minsdk"},
96-
{"name":"android-latest","avd-name":"medium_phone_API33_x86_64","start-script":"start-android-latest"}
97-
]
9892
strategy:
9993
matrix:
100-
include: ${{ fromJson(env.ANDROID_MATRIX) }}
94+
include:
95+
- name: android-min
96+
avd-name: pixel_API21_x86_64
97+
start-script: start-android-minsdk
98+
- name: android-latest
99+
avd-name: medium_phone_API33_x86_64
100+
start-script: start-android-latest
101101
steps:
102102
- uses: actions/checkout@v4
103103
- name: Yarn cache

devbox.json

Lines changed: 22 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,12 @@
55
"version": "latest",
66
"platforms": ["x86_64-darwin", "aarch64-darwin"],
77
},
8-
"yarn-berry": "latest",
9-
"jdk17": "latest",
10-
"gradle": "latest",
11-
"jq": "latest",
8+
"yarn-berry": "latest",
9+
"jdk17": "latest",
10+
"gradle": "latest",
11+
"jq": "latest",
1212
"path:./nix#android-sdk": "",
13+
"act": "latest",
1314
},
1415
"shell": {
1516
"init_hook": [
@@ -48,43 +49,46 @@
4849
"yarn e2e build:ios",
4950
"yarn e2e test:ios",
5051
],
52+
"act-ci": [
53+
"bash $DEVBOX_PROJECT_ROOT/scripts/act-ci.sh --platform ubuntu-latest=node:20-bullseye"
54+
],
5155
"setup-android": [
5256
"bash $DEVBOX_PROJECT_ROOT/scripts/android-setup.sh",
5357
],
5458
"setup-ios": [
5559
"bash $DEVBOX_PROJECT_ROOT/scripts/ios-setup.sh",
5660
],
5761
"start-emulator": [
58-
"bash $DEVBOX_PROJECT_ROOT/scripts/android-manager.sh start"
62+
"bash $DEVBOX_PROJECT_ROOT/scripts/android-manager.sh start",
5963
],
6064
"start-ios": [
61-
"bash $DEVBOX_PROJECT_ROOT/scripts/ios-manager.sh start"
65+
"bash $DEVBOX_PROJECT_ROOT/scripts/ios-manager.sh start",
6266
],
6367
"start-android-minsdk": [
64-
"bash $DEVBOX_PROJECT_ROOT/scripts/android-manager.sh start"
68+
"bash $DEVBOX_PROJECT_ROOT/scripts/android-manager.sh start",
6569
],
6670
"start-android-latest": [
67-
"AVD_FLAVOR=latest bash $DEVBOX_PROJECT_ROOT/scripts/android-manager.sh start"
71+
"AVD_FLAVOR=latest bash $DEVBOX_PROJECT_ROOT/scripts/android-manager.sh start",
6872
],
6973
"start-android": [
70-
"bash $DEVBOX_PROJECT_ROOT/scripts/android-manager.sh start"
74+
"bash $DEVBOX_PROJECT_ROOT/scripts/android-manager.sh start",
7175
],
7276
"release": [
7377
"npm config set //registry.npmjs.org/:_authToken ${NPM_TOKEN}",
7478
"yarn install --immutable",
7579
"yarn build",
76-
"yarn release"
80+
"yarn release",
7781
],
7882
"reset-android": [
7983
"rm -rf ~/.android/avd",
8084
"rm -f ~/.android/adbkey*",
81-
"echo \"AVDs and adb keys removed. Recreate via devbox run start-android* as needed.\""
85+
"echo \"AVDs and adb keys removed. Recreate via devbox run start-android* as needed.\"",
8286
],
8387
"reset-ios": [
8488
"xcrun simctl shutdown all || true",
8589
"xcrun simctl erase all || true",
8690
"rm -rf ~/Library/Developer/CoreSimulator/Devices",
87-
"echo \"Simulators reset. Recreate via devbox run start-ios.\""
91+
"echo \"Simulators reset. Recreate via devbox run start-ios.\"",
8892
],
8993
"stop-android": [
9094
"if command -v adb >/dev/null 2>&1; then",
@@ -99,24 +103,24 @@
99103
" echo \"adb not found; skipping Android emulator shutdown.\";",
100104
"fi",
101105
"pkill -f \"emulator@\" >/dev/null 2>&1 || true",
102-
"echo \"Android emulators stopped (if any were running).\""
106+
"echo \"Android emulators stopped (if any were running).\"",
103107
],
104108
"stop-ios": [
105109
"if command -v xcrun >/dev/null 2>&1 && xcrun -f simctl >/dev/null 2>&1; then",
106110
" if xcrun simctl list devices booted | grep -q \"Booted\"; then",
107-
" echo \"Shutting down booted iOS simulators...\";",
108-
" xcrun simctl shutdown all >/dev/null 2>&1 || true;",
111+
" echo \"Shutting down booted iOS simulators...\";",
112+
" xcrun simctl shutdown all >/dev/null 2>&1 || true;",
109113
" else",
110-
" echo \"No booted iOS simulators detected.\";",
114+
" echo \"No booted iOS simulators detected.\";",
111115
" fi;",
112116
"else",
113117
" echo \"simctl not available; skipping iOS shutdown.\";",
114118
"fi",
115-
"echo \"iOS simulators shutdown (if any were running).\""
119+
"echo \"iOS simulators shutdown (if any were running).\"",
116120
],
117121
"stop": [
118122
"devbox run stop-android",
119-
"devbox run stop-ios"
123+
"devbox run stop-ios",
120124
],
121125
"test": [
122126
"devbox run test-android",

devbox.lock

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,54 @@
11
{
22
"lockfile_version": "1",
33
"packages": {
4+
"act@latest": {
5+
"last_modified": "2026-01-09T13:41:53Z",
6+
"resolved": "github:NixOS/nixpkgs/5f02c91314c8ba4afe83b256b023756412218535#act",
7+
"source": "devbox-search",
8+
"version": "0.2.84",
9+
"systems": {
10+
"aarch64-darwin": {
11+
"outputs": [
12+
{
13+
"name": "out",
14+
"path": "/nix/store/a66igc76c2vzyl3q5z7c7kf7dr4b9is5-act-0.2.84",
15+
"default": true
16+
}
17+
],
18+
"store_path": "/nix/store/a66igc76c2vzyl3q5z7c7kf7dr4b9is5-act-0.2.84"
19+
},
20+
"aarch64-linux": {
21+
"outputs": [
22+
{
23+
"name": "out",
24+
"path": "/nix/store/wwrpc61p07x97b27ryhyks8zc9bq4j5c-act-0.2.84",
25+
"default": true
26+
}
27+
],
28+
"store_path": "/nix/store/wwrpc61p07x97b27ryhyks8zc9bq4j5c-act-0.2.84"
29+
},
30+
"x86_64-darwin": {
31+
"outputs": [
32+
{
33+
"name": "out",
34+
"path": "/nix/store/v5fv7inyakck6m1f5q4xz78gfk7r1al7-act-0.2.84",
35+
"default": true
36+
}
37+
],
38+
"store_path": "/nix/store/v5fv7inyakck6m1f5q4xz78gfk7r1al7-act-0.2.84"
39+
},
40+
"x86_64-linux": {
41+
"outputs": [
42+
{
43+
"name": "out",
44+
"path": "/nix/store/vpqyxvqac1f8pwva5ffxidr98qbfhn20-act-0.2.84",
45+
"default": true
46+
}
47+
],
48+
"store_path": "/nix/store/vpqyxvqac1f8pwva5ffxidr98qbfhn20-act-0.2.84"
49+
}
50+
}
51+
},
452
"cocoapods@latest": {
553
"last_modified": "2025-12-31T03:27:36Z",
654
"resolved": "github:NixOS/nixpkgs/f665af0cdb70ed27e1bd8f9fdfecaf451260fc55#cocoapods",

scripts/act-ci.sh

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
#!/usr/bin/env bash
2+
set -euo pipefail
3+
4+
# Run GitHub Actions workflows locally via act.
5+
# Usage: scripts/act-ci.sh [--job JOB] [--platform ubuntu-latest=node:20-bullseye]
6+
7+
JOB=""
8+
PLATFORM="ubuntu-latest=node:20-bullseye"
9+
10+
while [[ $# -gt 0 ]]; do
11+
case "$1" in
12+
-j|--job)
13+
JOB="$2"; shift 2 ;;
14+
-p|--platform)
15+
PLATFORM="$2"; shift 2 ;;
16+
*) echo "Unknown option: $1" >&2; exit 1 ;;
17+
esac
18+
done
19+
20+
CMD=(act)
21+
CMD+=(--pull=false)
22+
CMD+=(--platform "${PLATFORM}")
23+
if [[ -n "$JOB" ]]; then
24+
CMD+=(--job "$JOB")
25+
fi
26+
27+
printf 'Running: %s\n' "${CMD[*]}"
28+
exec "${CMD[@]}"

0 commit comments

Comments
 (0)