- 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>
- 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>
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>
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>
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>
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>
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>
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>
- 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>
- 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>
- 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>
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>
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>
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>