fix: apply Docker 24 network workaround and smoke tests to production deploy #64

Merged
jimmy merged 18 commits from dev into main 2026-05-17 23:34:02 +08:00

18 Commits

Author SHA1 Message Date
Gan, Jimmy d5faa14d07 fix: apply Docker 24 network workaround and smoke tests to production deploy
- Add SECRET_KEY env to deploy job for compose variable expansion
- Replace simple docker compose up with network stripping workaround
  (Docker 24 compose fails on external networks during container creation)
- Connect containers to networks manually after compose creates them
- Add smoke tests via docker exec against localhost:4000
- Create internal network manually when compose skips it

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-17 23:33:00 +08:00
Gan, Jimmy deb049c889 fix: open dev port to all interfaces and run smoke tests via docker exec
Deploy Dashboard (Dev) / Frontend Tests (push) Successful in 50s
Deploy Dashboard (Dev) / Deploy to Dev (push) Successful in 4m16s
Deploy Dashboard (Dev) / Backend Tests (push) Successful in 8m14s
- Change port binding from 127.0.0.1:4001:4000 to 4001:4000 so CI containers
  can reach the dashboard from any network namespace
- Run smoke tests via docker exec against localhost:4000 instead of curling
  the external hostname, which resolves to the Caddy VPS and times out

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-17 20:53:26 +08:00
Gan, Jimmy cf1de9c631 fix: add SECRET_KEY env to deploy job for compose expansion
Deploy Dashboard (Dev) / Backend Tests (push) Successful in 13m41s
Deploy Dashboard (Dev) / Frontend Tests (push) Successful in 42s
Deploy Dashboard (Dev) / Deploy to Dev (push) Failing after 3m34s
Container runtime needs SECRET_KEY in the shell environment so docker
compose can expand ${SECRET_KEY} from the compose file.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-17 20:31:53 +08:00
Gan, Jimmy 0ac3a896af fix: strip networks from compose file for Docker 24 compat
Deploy Dashboard (Dev) / Backend Tests (push) Successful in 14m49s
Deploy Dashboard (Dev) / Frontend Tests (push) Successful in 43s
Deploy Dashboard (Dev) / Deploy to Dev (push) Failing after 6m11s
Docker Compose v2.20.1 fails to create containers that need external
networks. Try compose directly; if container isn't created, generate a
stripped copy of the compose file without network config and retry.
Connect networks manually in both paths.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-17 20:09:14 +08:00
Gan, Jimmy c7073377ca fix: compose network bug - try up/direct, fallback to stripped config
Docker Compose v2.20.1 fails to create containers when external
networks can't be connected. First try compose directly; if container
isn't created, strip networks from resolved config via JSON processing
and retry. Connect networks manually in both paths.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-17 20:05:05 +08:00
Gan, Jimmy 91769fe2c6 fix: use network_mode:none in compose override for Docker 24 compat
Deploy Dashboard (Dev) / Backend Tests (push) Successful in 12m48s
Deploy Dashboard (Dev) / Frontend Tests (push) Successful in 34s
Deploy Dashboard (Dev) / Deploy to Dev (push) Failing after 1m27s
Docker Compose v2.20.1 still tries to connect external networks during
container creation even with networks:[]. Switch to network_mode:"none"
to fully prevent compose from touching networks, then connect them
manually after container creation.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-17 19:02:07 +08:00
Gan, Jimmy 9b05bd5e74 fix: fix YAML syntax error in compose override block
Deploy Dashboard (Dev) / Backend Tests (push) Successful in 11m31s
Deploy Dashboard (Dev) / Frontend Tests (push) Successful in 55s
Deploy Dashboard (Dev) / Deploy to Dev (push) Failing after 2m25s
Heredoc content at column 0 broke YAML block scalar parsing.
Replaced heredoc with echo commands to maintain consistent indentation.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-17 18:44:46 +08:00
Gan, Jimmy 03e4c44434 fix: bypass Docker 24 compose network bug via override file
Docker 24.0.2 compose fails to create containers when it can't connect
external networks. Strip network configs from compose and connect
them manually after container creation.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-08 01:30:45 +08:00
Gan, Jimmy 13480f70a3 fix: add pip timeout, retries, and mirror fallback to all CI workflows
Deploy Dashboard (Dev) / Frontend Tests (push) Has been cancelled
Deploy Dashboard (Dev) / Deploy to Dev (push) Has been cancelled
Deploy Dashboard (Dev) / Backend Tests (push) Has been cancelled
- Wrap pip install in timeout 300 to prevent hanging on slow mirrors
- Add --retries 3 --timeout 30 to pip for better resilience
- Fallback chain: default index → Tsinghua mirror → default index
- Applied to test.yml, deploy.yml, and deploy-dev.yml

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-08 00:56:03 +08:00
Gan, Jimmy e12a3930fe fix: fix YAML syntax error in deploy step network verification
Deploy Dashboard (Dev) / Frontend Tests (push) Has been cancelled
Deploy Dashboard (Dev) / Deploy to Dev (push) Has been cancelled
Deploy Dashboard (Dev) / Backend Tests (push) Has been cancelled
- Replace multi-line python3 -c with single-line to avoid YAML parser issue

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-08 00:15:22 +08:00
Gan, Jimmy 4bf646a4b3 fix: make deploy step resilient to transient Docker network failures
- Remove set -e from deploy step, handle errors explicitly
- Allow docker compose up to succeed even if network connect transiently fails
- Verify container exists and connect networks manually after compose
- Add network connection verification step

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-08 00:07:59 +08:00
Gan, Jimmy c6cd56693f fix: align deploy job with ubuntu-latest runner and fix smoke test docker access
Deploy Dashboard (Dev) / Backend Tests (push) Successful in 33m9s
Deploy Dashboard (Dev) / Frontend Tests (push) Successful in 54s
Deploy Dashboard (Dev) / Deploy to Dev (push) Failing after 1m41s
- Change deploy-dev job from runs-on: nas to runs-on: ubuntu-latest with
  container volumes mounting NAS Docker CLI, compose plugin, and compose dir
- Remove /volume1/repos/nas-tools path dependency in smoke test step
- Replace ssh nas docker with direct docker commands in smoke test script
  (container now has Docker CLI access)

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-07 23:03:00 +08:00
Gan, Jimmy b0cf119a52 chore: retry CI
Deploy Dashboard (Dev) / Frontend Tests (push) Has been cancelled
Deploy Dashboard (Dev) / Deploy to Dev (push) Has been cancelled
Deploy Dashboard (Dev) / Backend Tests (push) Has been cancelled
2026-05-07 22:49:15 +08:00
Gan, Jimmy 39199eb231 chore: retry CI 2026-05-07 22:47:36 +08:00
Gan, Jimmy 3b8388f01c fix: add npm registry fallback when npmmirror is unreachable
Deploy Dashboard (Dev) / Frontend Tests (push) Has been cancelled
Deploy Dashboard (Dev) / Deploy to Dev (push) Has been cancelled
Deploy Dashboard (Dev) / Backend Tests (push) Has been cancelled
CI runner in China may lose connectivity to npmmirror. Falls back
to default npmjs.org registry when npm ci fails with connector errors.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-07 22:22:57 +08:00
Gan, Jimmy b092ab4583 fix: wrap Svelte HMR configureServer for vitest 3 compat
Deploy Dashboard (Dev) / Backend Tests (push) Successful in 10m12s
Deploy Dashboard (Dev) / Frontend Tests (push) Successful in 51s
Deploy Dashboard (Dev) / Deploy to Dev (push) Failing after 2m2s
Vitest 3 bundles its own Vite which omits server.config.server,
causing the Svelte plugin's hot-update configureServer hook to
throw TypeError. Catches the error safely during test runs.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-07 13:15:58 +08:00
Gan, Jimmy 50e97c4a70 fix: replace actions/checkout@v4 with local git clone from Gitea
Deploy Claude Dev (Dev) / deploy-claude-dev-dev (push) Successful in 1m45s
Deploy Dashboard (Dev) / Frontend Tests (push) Has been cancelled
Deploy Dashboard (Dev) / Deploy to Dev (push) Has been cancelled
Deploy Dashboard (Dev) / Backend Tests (push) Has been cancelled
CI runner in China can't reach GitHub to download the checkout action.
Clone directly from internal Gitea container (http://gitea:3000) instead.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-07 13:03:56 +08:00
Gan, Jimmy d978842c37 fix: upgrade vitest to v3, compat fixes for Svelte 5 + jsdom
Deploy Dashboard (Dev) / Frontend Tests (push) Failing after 43s
Deploy Dashboard (Dev) / Deploy to Dev (push) Has been skipped
Deploy Dashboard (Dev) / Backend Tests (push) Failing after 4m0s
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-07 12:37:15 +08:00