13 Commits

Author SHA1 Message Date
Gan, Jimmy 56fd761618 Restore venv activation in test step, clear VPS cache
Cached venv has broken internal paths even when using venv/bin/python
directly. Clear caches and use . venv/bin/activate + python -m pytest
which correctly sets VIRTUAL_ENV for module resolution.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-04 11:07:23 +08:00
Gan, Jimmy 3989e281c0 fix(ci): use explicit venv/bin/python instead of activate+python3
Deploy Dashboard (Main) / Deploy to Production (push) Has been cancelled
Deploy Dashboard (Main) / Frontend Tests (push) Has been cancelled
Deploy Dashboard (Main) / Backend Tests (push) Has been cancelled
activate doesn't reliably shadow system python3 on the VPS runner.
Using the explicit venv path matches what the cache validation check
already uses.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-04 10:59:55 +08:00
Gan, Jimmy 90546b6c9a Use python3 not python in pytest command
VPS host has python3 (not python) available. Fixes "python: command
not found" error from previous commit.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-04 10:39:02 +08:00
Gan, Jimmy 3f0bcd2b7f chore: remove CI trigger file
Deploy Claude Dev (Dev) / deploy-claude-dev-dev (push) Successful in 1m0s
2026-06-04 10:38:09 +08:00
Gan, Jimmy f2fa2daaa8 fix(ci): create default .env in CI if missing before compose validate
Deploy Claude Dev (Dev) / deploy-claude-dev-dev (push) Has been cancelled
The CI container may not have /volume1/docker/claude-dev/.env mounted,
causing 'docker compose config' to fail.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-04 10:36:50 +08:00
Gan, Jimmy 00364114d5 Use python -m pytest instead of pytest binary in CI
Venv symlinks break when cache is used across different environments
(VPS host vs NAS Docker). python -m pytest is resilient because it
loads pytest as a module, not via a shebang-based script.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-04 10:00:24 +08:00
Gan, Jimmy e3ac6344f6 fix(ci): use Docker bridge gateway IP 172.21.0.1:3300 for checkout
Deploy Claude Dev (Dev) / deploy-claude-dev-dev (push) Failing after 1m4s
host.docker.internal not resolving in act containers on Synology Docker.
The gateway IP 172.21.0.1 routes to the host where Gitea is now
bound to 0.0.0.0:3300.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-04 10:00:12 +08:00
Gan, Jimmy 92c1f29843 Merge main into dev: resolve CI checkout URL conflict
Deploy Claude Dev (Dev) / deploy-claude-dev-dev (push) Failing after 25s
Use host.docker.internal:3300 with ubuntu-latest runner.
Gitea port now bound to 0.0.0.0:3300 so Docker containers
can reach it.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-04 09:58:23 +08:00
Gan, Jimmy d42a5422db chore: trigger claude-dev CI pipeline 2026-06-04 09:57:56 +08:00
Gan, Jimmy 85ca387877 fix(ci): use host.docker.internal:3300 for checkout after Gitea port fix
Changed Gitea HTTP port binding from 127.0.0.1:3300 to 0.0.0.0:3300
so Docker containers can reach Gitea via host.docker.internal.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-04 09:53:07 +08:00
Gan, Jimmy bb9a4c3977 Create /nas-dashboard directory before syncing compose file
Docker volume mounts may not auto-create mount points inside the
job container. Use mkdir -p to ensure the target directory exists
before copying files.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-04 09:50:36 +08:00
Gan, Jimmy 761f5f562b fix(ci): use nas:host runner with localhost:3300 for claude-dev CI
Deploy Claude Dev (Dev) / deploy-claude-dev-dev (push) Has been cancelled
The act Docker containers on the NAS runner cannot reach Gitea
on the gitea_gitea network despite the runner config. Switching
to the 'nas' runner label which uses host mode — jobs run directly
on the NAS host where localhost:3300 reaches Gitea.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-04 09:49:30 +08:00
Gan, Jimmy 10e48461d4 fix(ci): use Gitea container IP for checkout in claude-dev workflow
Deploy Claude Dev (Dev) / deploy-claude-dev-dev (push) Failing after 16m58s
Replaces 'gitea:3000' with '172.21.0.4:3000' to bypass DNS
resolution issues in act job containers. Also removed --dns
override from runner-config.yaml which was breaking Docker's
embedded DNS and container name resolution.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-03 11:52:34 +08:00
2 changed files with 9 additions and 3 deletions
+5 -1
View File
@@ -22,7 +22,7 @@ jobs:
- name: Checkout repository
run: |
if [ ! -d .git ]; then
git clone --branch "${GITHUB_REF_NAME}" --depth=1 "http://gitea:3000/${GITHUB_REPOSITORY}.git" .
git clone --branch "${GITHUB_REF_NAME}" --depth=1 "http://172.21.0.1:3300/${GITHUB_REPOSITORY}.git" .
fi
- name: Resolve image tags
@@ -124,6 +124,10 @@ jobs:
run: |
set -euo pipefail
export DOCKER_API_VERSION=1.43
# Ensure .env exists (CI container may not have it mounted)
if [ ! -f /volume1/docker/claude-dev/.env ]; then
printf 'ANTHROPIC_API_KEY=ci\nANTHROPIC_BASE_URL=https://www.bytecatcode.org\nANTHROPIC_MODEL=ci\nANTHROPIC_SMALL_FAST_MODEL=ci\nCLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1\nCLAUDE_DEV_IMAGE_TAG=latest\n' > /volume1/docker/claude-dev/.env
fi
if ! docker compose -f /volume1/docker/claude-dev/docker-compose.yml config >/dev/null; then
echo "❌ docker-compose config validation failed"
docker compose -f /volume1/docker/claude-dev/docker-compose.yml config
+4 -2
View File
@@ -89,7 +89,7 @@ jobs:
run: |
cd dashboard/backend
. venv/bin/activate
pytest tests/ -v --timeout=60 \
python -m pytest tests/ -v --timeout=60 \
--cov=. --cov-report=xml --cov-report=term \
--junit-xml=test-results.xml \
--cov-fail-under=49
@@ -242,7 +242,9 @@ jobs:
fi
- name: Sync runtime compose file
run: cp dashboard/docker-compose.yml /nas-dashboard/docker-compose.yml
run: |
mkdir -p /nas-dashboard
cp dashboard/docker-compose.yml /nas-dashboard/docker-compose.yml
- name: Deploy and verify
run: |