Skip to content

Commit 11bc61e

Browse files
abueideclaude
andcommitted
chore: add release automation and cleanup config
- Add GitHub release workflow and version bump script - Rename ANDROID_SKIP_DOWNLOADS to ANDROID_SKIP_SETUP for clarity - Add findutils package to Android and iOS plugins - Remove deprecated examples/android/android.json config file - Update command references from 'start' to 'start:app' throughout docs - Update devbox.json and lockfile with latest dependencies Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
1 parent 00e3304 commit 11bc61e

23 files changed

Lines changed: 448 additions & 57 deletions

File tree

.github/workflows/release.yml

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
name: Create Release
2+
on:
3+
push:
4+
branches: [main]
5+
6+
jobs:
7+
check-release:
8+
runs-on: ubuntu-latest
9+
permissions:
10+
contents: write
11+
steps:
12+
- uses: actions/checkout@v4
13+
with:
14+
fetch-depth: 0
15+
16+
- name: Check for version bump commit
17+
id: check
18+
run: |
19+
MSG=$(git log -1 --format=%s)
20+
if echo "$MSG" | grep -qE '^chore\(release\):'; then
21+
echo "is_release=true" >> "$GITHUB_OUTPUT"
22+
TAG=$(git describe --tags --exact-match HEAD 2>/dev/null || echo "")
23+
echo "tag=$TAG" >> "$GITHUB_OUTPUT"
24+
BODY=$(git log -1 --format=%b)
25+
echo "body<<EOF" >> "$GITHUB_OUTPUT"
26+
echo "$BODY" >> "$GITHUB_OUTPUT"
27+
echo "EOF" >> "$GITHUB_OUTPUT"
28+
else
29+
echo "is_release=false" >> "$GITHUB_OUTPUT"
30+
fi
31+
32+
- name: Create GitHub Release
33+
if: steps.check.outputs.is_release == 'true' && steps.check.outputs.tag != ''
34+
env:
35+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
36+
run: |
37+
gh release create "${{ steps.check.outputs.tag }}" \
38+
--title "${{ steps.check.outputs.tag }}" \
39+
--notes "${{ steps.check.outputs.body }}"

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ devbox shell
3333

3434
# Start emulator and run app
3535
devbox run start:emu
36-
devbox run start
36+
devbox run start:app
3737
```
3838

3939
The app's package name is auto-detected from the APK at install time.
@@ -124,7 +124,7 @@ Each example includes device definitions, test suites, and build scripts.
124124
```bash
125125
# Android
126126
devbox run start:emu # Start Android emulator
127-
devbox run start # Build, install, and launch app
127+
devbox run start:app # Build, install, and launch app
128128
devbox run stop:emu # Stop emulator
129129

130130
# iOS

devbox.json

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,18 @@
11
{
22
"packages": {
33
"process-compose": "latest",
4-
"act": "latest",
5-
"shellcheck": "latest",
6-
"nodejs": "latest",
7-
"treefmt": "latest"
4+
"act": "latest",
5+
"shellcheck": "latest",
6+
"nodejs": "latest",
7+
"treefmt": "latest",
8+
"gh": "latest",
9+
"claude-code": "latest"
810
},
911
"env": {
10-
"REPORTS_DIR": "reports",
12+
"REPORTS_DIR": "reports",
1113
"TEST_RESULTS_DIR": "reports/results",
12-
"TEST_LOGS_DIR": "reports/logs",
13-
"TEST_TUI": "false"
14+
"TEST_LOGS_DIR": "reports/logs",
15+
"TEST_TUI": "false"
1416
},
1517
"shell": {
1618
"scripts": {
@@ -181,6 +183,9 @@
181183
"/bin/bash tests/integration/ios/test-device-mgmt.sh",
182184
"/bin/bash tests/integration/ios/test-cache.sh"
183185
],
186+
"bump": [
187+
"bash scripts/bump.sh \"${@}\""
188+
],
184189
"test:fast": [
185190
"echo 'Running fast tests (lint + unit + integration)...'",
186191
"devbox run lint",

devbox.lock

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,102 @@
4949
}
5050
}
5151
},
52+
"claude-code@latest": {
53+
"last_modified": "2026-02-13T23:34:13Z",
54+
"resolved": "github:NixOS/nixpkgs/7d2ae6d8b8b697b5114a4249d0d958ee5f23d8fe#claude-code",
55+
"source": "devbox-search",
56+
"version": "2.1.39",
57+
"systems": {
58+
"aarch64-darwin": {
59+
"outputs": [
60+
{
61+
"name": "out",
62+
"path": "/nix/store/jxyjdnn3nmvjqv7n1diiysb799qfvr60-claude-code-2.1.39",
63+
"default": true
64+
}
65+
],
66+
"store_path": "/nix/store/jxyjdnn3nmvjqv7n1diiysb799qfvr60-claude-code-2.1.39"
67+
},
68+
"aarch64-linux": {
69+
"outputs": [
70+
{
71+
"name": "out",
72+
"path": "/nix/store/sjqfnb9anq60yi7rb835ig7bqh4hg5q8-claude-code-2.1.39",
73+
"default": true
74+
}
75+
],
76+
"store_path": "/nix/store/sjqfnb9anq60yi7rb835ig7bqh4hg5q8-claude-code-2.1.39"
77+
},
78+
"x86_64-darwin": {
79+
"outputs": [
80+
{
81+
"name": "out",
82+
"path": "/nix/store/ms34ydrd192vvh8bw0jfv7kdi3qm0l1x-claude-code-2.1.39",
83+
"default": true
84+
}
85+
],
86+
"store_path": "/nix/store/ms34ydrd192vvh8bw0jfv7kdi3qm0l1x-claude-code-2.1.39"
87+
},
88+
"x86_64-linux": {
89+
"outputs": [
90+
{
91+
"name": "out",
92+
"path": "/nix/store/1730mk79ga0f71h41bb05m6lg5hs31r5-claude-code-2.1.39",
93+
"default": true
94+
}
95+
],
96+
"store_path": "/nix/store/1730mk79ga0f71h41bb05m6lg5hs31r5-claude-code-2.1.39"
97+
}
98+
}
99+
},
100+
"gh@latest": {
101+
"last_modified": "2026-01-23T17:20:52Z",
102+
"resolved": "github:NixOS/nixpkgs/a1bab9e494f5f4939442a57a58d0449a109593fe#gh",
103+
"source": "devbox-search",
104+
"version": "2.86.0",
105+
"systems": {
106+
"aarch64-darwin": {
107+
"outputs": [
108+
{
109+
"name": "out",
110+
"path": "/nix/store/y207r5sjcd81gfnsxxssgiiiwl6mcg6f-gh-2.86.0",
111+
"default": true
112+
}
113+
],
114+
"store_path": "/nix/store/y207r5sjcd81gfnsxxssgiiiwl6mcg6f-gh-2.86.0"
115+
},
116+
"aarch64-linux": {
117+
"outputs": [
118+
{
119+
"name": "out",
120+
"path": "/nix/store/zx4plaf0z1yv06wdhxxhpbm7kmslm2r8-gh-2.86.0",
121+
"default": true
122+
}
123+
],
124+
"store_path": "/nix/store/zx4plaf0z1yv06wdhxxhpbm7kmslm2r8-gh-2.86.0"
125+
},
126+
"x86_64-darwin": {
127+
"outputs": [
128+
{
129+
"name": "out",
130+
"path": "/nix/store/vhpac8ld4xkaa13bsrbwnyrmlcxsg57q-gh-2.86.0",
131+
"default": true
132+
}
133+
],
134+
"store_path": "/nix/store/vhpac8ld4xkaa13bsrbwnyrmlcxsg57q-gh-2.86.0"
135+
},
136+
"x86_64-linux": {
137+
"outputs": [
138+
{
139+
"name": "out",
140+
"path": "/nix/store/xf3rb2kmk19092b1pf50ag0fsj2f6hpa-gh-2.86.0",
141+
"default": true
142+
}
143+
],
144+
"store_path": "/nix/store/xf3rb2kmk19092b1pf50ag0fsj2f6hpa-gh-2.86.0"
145+
}
146+
}
147+
},
52148
"github:NixOS/nixpkgs/nixpkgs-unstable": {
53149
"last_modified": "2026-02-08T07:51:33Z",
54150
"resolved": "github:NixOS/nixpkgs/fef9403a3e4d31b0a23f0bacebbec52c248fbb51?lastModified=1770537093"

examples/android/.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,6 @@
33

44
# Ignore Gradle build output directory
55
build
6+
7+
# Runtime-generated config (created by init-hook.sh from env vars)
8+
android.json

examples/android/android.json

Lines changed: 0 additions & 14 deletions
This file was deleted.

examples/android/devbox.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
"stop:emu": [
2121
"android.sh emulator stop"
2222
],
23-
"start": [
23+
"start:app": [
2424
"android.sh run ${1:-${ANDROID_DEFAULT_DEVICE:-max}}"
2525
],
2626
"test": [

examples/ios/devbox.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,14 @@
2121
"stop:sim": [
2222
"ios.sh simulator stop"
2323
],
24-
"start:ios": [
24+
"start:app": [
2525
"ios.sh simulator start ${1:-${IOS_DEFAULT_DEVICE:-max}}",
2626
"xcrun simctl install booted ${IOS_APP_ARTIFACT}",
2727
"xcrun simctl launch booted ${IOS_APP_BUNDLE_ID}"
2828
],
2929
"deploy": [
3030
"devbox run build",
31-
"devbox run start:ios"
31+
"devbox run start:app"
3232
],
3333
"test": [
3434
"env -u LD -u LDFLAGS -u NIX_LDFLAGS -u NIX_CFLAGS_COMPILE -u NIX_CFLAGS_LINK xcodebuild -project ${IOS_APP_PROJECT} -scheme ${IOS_APP_SCHEME} -configuration Debug -destination 'generic/platform=iOS Simulator' -derivedDataPath .devbox/virtenv/ios/DerivedData test"

plugins/android/REFERENCE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ Configure the plugin by setting environment variables in `plugin.json`. These ar
6161

6262
### Run app
6363

64-
- `devbox run start [apk_path] [device]`
64+
- `devbox run start:app [apk_path] [device]`
6565
- Builds, installs, and launches the app on the emulator
6666
- If `apk_path` is provided, skips build step and installs provided APK
6767
- If no arguments, builds project and installs APK matched by `ANDROID_APP_APK`

plugins/android/plugin.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
"gnused": "latest",
3333
"gnugrep": "latest",
3434
"gawk": "latest",
35+
"findutils": "latest",
3536
"jq": "latest",
3637
"process-compose": "latest"
3738
},

0 commit comments

Comments
 (0)