@@ -26,40 +26,54 @@ This repository creates the official multi-architecture Docker images for Homebr
26
26
27
27
### Current Build Status - IMPORTANT
28
28
29
- ** ⚠️ LOCAL BUILDS CURRENTLY FAIL** due to ` pipx install tzupdate ` dependency issue in Dockerfile (fails after ~ 2 minutes at build step 2/9). Use published images for all testing and validation.
29
+ ** ⚠️ LOCAL BUILDS CURRENTLY FAIL** due to ` pipx install tzupdate ` dependency issue in Dockerfile (fails after ~ 89 seconds at build step 2/9). Use published images for all testing and validation.
30
30
31
31
### Working Validation Commands
32
32
33
33
** Always run these commands from the repository root.**
34
34
35
35
1 . ** Test Stable Release (Published Image):**
36
36
``` bash
37
- # Uses published stable image - NEVER CANCEL, takes ~25 seconds
37
+ # Uses published stable image - NEVER CANCEL, takes ~19 seconds
38
38
cd test
39
39
export HOMEBRIDGE_IMAGE=' ghcr.io/homebridge/homebridge:latest'
40
40
docker compose up -d
41
41
# Verify UI accessible: curl -s -o /dev/null -w "%{http_code}" http://localhost:8581
42
42
# Should return 200
43
43
docker compose down
44
44
```
45
- - Duration: 25 seconds for image pull, 10 seconds for startup
45
+ - Duration: 19 seconds for image pull, 15 seconds for startup
46
46
- Validates: Container startup, UI accessibility, Homebridge functionality
47
47
- Creates working container accessible at http://localhost:8581
48
48
49
49
2 . ** Test Beta Release (Published Image):**
50
50
``` bash
51
- # Uses published beta image - NEVER CANCEL, takes ~25 seconds
51
+ # Uses published beta image - NEVER CANCEL, takes ~20 seconds
52
52
cd test
53
53
export HOMEBRIDGE_IMAGE=' ghcr.io/homebridge/homebridge:beta'
54
54
docker compose up -d
55
55
# Verify UI accessible: curl -s -o /dev/null -w "%{http_code}" http://localhost:8581
56
56
# Should return 200
57
57
docker compose down
58
58
```
59
- - Duration: 25 seconds for image pull, 10 seconds for startup
59
+ - Duration: 20 seconds for image pull, 15 seconds for startup
60
60
- Uses beta package versions and latest development features
61
61
- Creates beta-tagged container
62
62
63
+ 3 . ** Test Alpha Release (Published Image):**
64
+ ``` bash
65
+ # Uses published alpha image - NEVER CANCEL, takes ~21 seconds
66
+ cd test
67
+ export HOMEBRIDGE_IMAGE=' ghcr.io/homebridge/homebridge:alpha'
68
+ docker compose up -d
69
+ # Verify UI accessible: curl -s -o /dev/null -w "%{http_code}" http://localhost:8581
70
+ # Should return 200
71
+ docker compose down
72
+ ```
73
+ - Duration: 21 seconds for image pull, 15 seconds for startup
74
+ - Uses alpha package versions for early testing
75
+ - Creates alpha-tagged container
76
+
63
77
### Local Build Commands (Currently Failing - Use Only for Investigation)
64
78
65
79
** ❌ DO NOT USE FOR VALIDATION** - These will fail but are documented for completeness:
@@ -69,7 +83,7 @@ This repository creates the official multi-architecture Docker images for Homebr
69
83
# Extracts versions from package.json automatically - WILL FAIL at tzupdate step
70
84
./test-build-local.sh
71
85
```
72
- - Expected failure at ~ 113 seconds during ` pipx install tzupdate `
86
+ - Expected failure at ~ 89 seconds during ` pipx install tzupdate `
73
87
- Error: "No matching distribution found for tzupdate"
74
88
75
89
2 . ** Beta Build (Will Fail):**
@@ -85,7 +99,7 @@ This repository creates the official multi-architecture Docker images for Homebr
85
99
This repository uses the NorthernMan54/Homebridge-Dependency-Bot to automatically update dependencies for stable, beta, and alpha release streams. The bot runs daily via a consolidated workflow and can also be triggered manually.
86
100
87
101
** Dependency Management Workflow:**
88
- - ** Consolidated Workflow** (` dependency_management .yml` ):
102
+ - ** Consolidated Workflow** (` release-stage-1_update_dependencies .yml` ):
89
103
- Runs daily at 10:00 UTC (6 AM Eastern)
90
104
- Updates dependencies for all three release streams: stable, beta, alpha
91
105
- Uses NorthernMan54/Homebridge-Dependency-Bot action
@@ -104,7 +118,7 @@ This repository uses the NorthernMan54/Homebridge-Dependency-Bot to automaticall
104
118
- Automated process ensures all release streams stay current with upstream changes
105
119
106
120
** Troubleshooting Dependency Bot:**
107
- - Check workflow run logs in Actions tab for ` dependency_management .yml`
121
+ - Check workflow run logs in Actions tab for ` release-stage-1_update_dependencies .yml`
108
122
- Verify JSON syntax with ` jq . .github/homebridge-dependency-bot-*.json `
109
123
- Manual trigger available via workflow_dispatch in GitHub Actions UI
110
124
- Bot requires ` GH_TOKEN ` secret for PR approval (auto-configured)
@@ -141,14 +155,21 @@ docker build \
141
155
cd test
142
156
# Test stable
143
157
export HOMEBRIDGE_IMAGE=' ghcr.io/homebridge/homebridge:latest'
144
- docker compose up -d && sleep 10
158
+ docker compose up -d && sleep 15
145
159
curl -f http://localhost:8581 || echo " UI not accessible"
146
160
docker compose logs --tail 20
147
161
docker compose down
148
162
149
163
# Test beta
150
164
export HOMEBRIDGE_IMAGE=' ghcr.io/homebridge/homebridge:beta'
151
- docker compose up -d && sleep 10
165
+ docker compose up -d && sleep 15
166
+ curl -f http://localhost:8581 || echo " UI not accessible"
167
+ docker compose logs --tail 20
168
+ docker compose down
169
+
170
+ # Test alpha
171
+ export HOMEBRIDGE_IMAGE=' ghcr.io/homebridge/homebridge:alpha'
172
+ docker compose up -d && sleep 15
152
173
curl -f http://localhost:8581 || echo " UI not accessible"
153
174
docker compose logs --tail 20
154
175
docker compose down
@@ -189,8 +210,8 @@ docker compose down
189
210
├── homebridge-dependency-bot-alpha.json # Alpha release dependency configuration
190
211
├── dependabot.yml # Deprecated - migrated to dependency bot
191
212
└── workflows/
192
- ├── build_and_push .yml # Main build and release workflow
193
- └── dependency_management .yml # Consolidated dependency management
213
+ ├── release-stage-1_update_dependencies .yml # Dependency management workflow
214
+ └── release-stage-2_build_and_push_docker_images .yml # Main build and release workflow
194
215
```
195
216
196
217
### Key Configuration Files
@@ -203,7 +224,7 @@ docker compose down
203
224
204
225
### CI/CD Pipeline
205
226
206
- ** Main Release Pipeline (.github/workflows/build_and_push .yml):**
227
+ ** Main Release Pipeline (.github/workflows/release-stage-2_build_and_push_docker_images .yml):**
207
228
1 . ** Version extraction** from package.json files
208
229
2 . ** Multi-architecture builds** (amd64, arm32v7, arm64v8)
209
230
3 . ** Container registry pushes** (GitHub Container Registry + Docker Hub)
@@ -213,10 +234,10 @@ docker compose down
213
234
** Manual Trigger Required:** Workflow runs via ` workflow_dispatch ` only.
214
235
215
236
** Dependency Management Pipeline:**
216
- - ** Consolidated Workflow:** ` dependency_management .yml` handles all release streams
237
+ - ** Consolidated Workflow:** ` release-stage-1_update_dependencies .yml` handles all release streams
217
238
- ** Daily Schedule:** Runs at 10:00 UTC, processes stable/beta/alpha streams
218
239
- ** Auto-merge:** Enabled for dependency PRs to maintain currency
219
- - ** Trigger Builds:** Automatically triggers build_and_push .yml after updates
240
+ - ** Trigger Builds:** Automatically triggers release-stage-2_build_and_push_docker_images .yml after updates
220
241
- ** Manual Control:** Support selective stream updates via workflow_dispatch
221
242
222
243
** Build Matrix:**
@@ -265,7 +286,7 @@ docker compose down
265
286
266
287
** Always validate:**
267
288
- JSON syntax in package.json files (` jq . package.json ` )
268
- - JSON syntax in beta bot config (` jq . .github/homebridge-beta -bot.json ` )
289
+ - JSON syntax in dependency bot configs (` jq . .github/homebridge-dependency -bot-* .json ` )
269
290
- Shell script syntax (` bash -n script.sh ` )
270
291
- Published image functionality using test commands above
271
292
@@ -306,13 +327,27 @@ docker compose down
306
327
docker compose down
307
328
```
308
329
309
- 3 . ** Version Verification:**
330
+ 3 . ** Alpha Version Test:**
331
+ ``` bash
332
+ cd test
333
+ export HOMEBRIDGE_IMAGE=' ghcr.io/homebridge/homebridge:alpha'
334
+ docker compose up -d
335
+ sleep 15
336
+ curl -f http://localhost:8581 > /dev/null && echo " ✅ Alpha UI accessible" || echo " ❌ Alpha UI failed"
337
+ docker compose logs | grep " Homebridge v2" && echo " ✅ Alpha version running" || echo " ❌ Not alpha version"
338
+ docker compose down
339
+ ```
340
+
341
+ 4 . ** Version Verification:**
310
342
``` bash
311
343
# Check stable version
312
344
docker run --rm ghcr.io/homebridge/homebridge:latest cat /opt/homebridge/Docker.manifest | head -10
313
345
314
346
# Check beta version
315
347
docker run --rm ghcr.io/homebridge/homebridge:beta cat /opt/homebridge/Docker.manifest | head -10
348
+
349
+ # Check alpha version
350
+ docker run --rm ghcr.io/homebridge/homebridge:alpha cat /opt/homebridge/Docker.manifest | head -10
316
351
```
317
352
318
353
## Common Tasks Reference
@@ -321,11 +356,14 @@ docker compose down
321
356
322
357
### Test Published Images
323
358
``` bash
324
- # Pull and test stable image (~25 seconds)
359
+ # Pull and test stable image (~19 seconds)
325
360
cd test && export HOMEBRIDGE_IMAGE=' ghcr.io/homebridge/homebridge:latest' && docker compose up -d
326
361
327
- # Pull and test beta image (~25 seconds)
362
+ # Pull and test beta image (~20 seconds)
328
363
cd test && export HOMEBRIDGE_IMAGE=' ghcr.io/homebridge/homebridge:beta' && docker compose up -d
364
+
365
+ # Pull and test alpha image (~21 seconds)
366
+ cd test && export HOMEBRIDGE_IMAGE=' ghcr.io/homebridge/homebridge:alpha' && docker compose up -d
329
367
```
330
368
331
369
### Verify JSON Configuration
@@ -336,8 +374,13 @@ jq . package.json
336
374
# Validate beta package.json syntax
337
375
jq . beta/package.json
338
376
339
- # Validate beta bot configuration
340
- jq . .github/homebridge-beta-bot.json
377
+ # Validate alpha package.json syntax
378
+ jq . alpha/package.json
379
+
380
+ # Validate dependency bot configurations
381
+ jq . .github/homebridge-dependency-bot-stable.json
382
+ jq . .github/homebridge-dependency-bot-beta.json
383
+ jq . .github/homebridge-dependency-bot-alpha.json
341
384
```
342
385
343
386
### Check Repository Structure
@@ -352,7 +395,7 @@ find rootfs/etc/s6-overlay -type f | head -10
352
395
353
396
# GitHub workflows
354
397
ls .github/workflows/
355
- # Output: build_and_push .yml, beta automation workflows
398
+ # Output: release-stage-1_update_dependencies .yml, release-stage-2_build_and_push_docker_images.yml, etc.
356
399
```
357
400
358
401
### Test Environment
@@ -369,9 +412,9 @@ grep "image:" test/docker-compose.yml
369
412
** CRITICAL REMINDERS:**
370
413
- ** NEVER attempt local builds** - they will fail due to tzupdate dependency issue
371
414
- ** ALWAYS use published images** for testing and validation
372
- - ** NEVER CANCEL** published image pulls - they take 20-25 seconds and work reliably
373
- - ** Always wait 10- 15 seconds** after container startup before testing UI
374
- - ** Always use ` docker compose down ` ** for clean shutdown (takes ~ 10 seconds)
415
+ - ** NEVER CANCEL** published image pulls - they take 19-21 seconds and work reliably
416
+ - ** Always wait 15 seconds** after container startup before testing UI
417
+ - ** Always use ` docker compose down ` ** for clean shutdown (takes ~ 3 seconds)
375
418
376
419
## Validation Steps
377
420
@@ -388,7 +431,7 @@ grep "image:" test/docker-compose.yml
388
431
389
432
** Always validate:**
390
433
- JSON syntax in package.json files (` jq . package.json ` )
391
- - JSON syntax in beta bot config (` jq . .github/homebridge-beta -bot.json ` )
434
+ - JSON syntax in dependency bot configs (` jq . .github/homebridge-dependency -bot-* .json ` )
392
435
- Shell script syntax (` bash -n script.sh ` )
393
436
- Docker build completes without errors
394
437
- Container starts and reaches healthy state
0 commit comments