Files
nas-tools/.gitea/workflows/deploy-dev.yml
T
Gan, Jimmy bd0b68d952
Deploy Dashboard (Dev) / deploy-dev (push) Failing after 7m24s
Run Tests / Frontend Tests (push) Has been cancelled
Run Tests / Test Summary (push) Has been cancelled
Run Tests / Backend Tests (push) Has started running
fix: ensure nas-dashboard_internal network exists before docker run
2026-04-05 02:41:18 +08:00

108 lines
4.3 KiB
YAML

name: Deploy Dashboard (Dev)
on:
push:
branches: [dev]
paths:
- 'dashboard/**'
- '.gitea/workflows/deploy-dev.yml'
concurrency:
group: deploy-dashboard-dev
cancel-in-progress: true
jobs:
deploy-dev:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
ref: ${{ github.sha }}
- name: Warm mirror cache for base images
run: |
set -u
mirror_host="127.0.0.1:5501"
if command -v curl >/dev/null 2>&1; then
if curl -fsS "http://${mirror_host}/v2/" >/dev/null; then
echo "Registry mirror is healthy at ${mirror_host}"
else
echo "Warning: registry mirror health check failed at ${mirror_host}; continuing with normal pull path"
fi
else
echo "Warning: curl is unavailable; skipping explicit mirror health check"
fi
prewarm_base_image() {
image_ref="$1"
mirror_ref="${mirror_host}/library/${image_ref}"
echo "Attempting mirror pre-pull: ${mirror_ref}"
if timeout 60 docker pull "${mirror_ref}"; then
docker tag "${mirror_ref}" "${image_ref}"
echo "Mirror pre-pull succeeded for ${image_ref}"
else
echo "Warning: mirror pre-pull failed for ${image_ref}; continuing with normal pull during build"
fi
}
prewarm_base_image "node:20-alpine"
prewarm_base_image "python:3.12-slim"
- name: Build dev image
run: |
export DOCKER_API_VERSION=1.43
DOCKER_BUILDKIT=0 docker build --cache-from nas-dashboard-dev:latest -t nas-dashboard-dev:latest dashboard/
- name: Sync runtime compose file
run: |
mkdir -p /volume1/docker/nas-dashboard
cp dashboard/docker-compose.dev.yml /volume1/docker/nas-dashboard/docker-compose.dev.yml
- name: Deploy dev
run: |
set -euo pipefail
export DOCKER_API_VERSION=1.43
cd /volume1/docker/nas-dashboard
# Stop and remove existing container if it exists
docker compose -f docker-compose.dev.yml down --remove-orphans || true
docker rm -f nas-dashboard-dev || true
# Ensure network exists
docker network create nas-dashboard_internal 2>/dev/null || true
# Deploy with bridge networking to avoid port 4000 conflicts with Production
docker run -d \
--name nas-dashboard-dev \
--restart unless-stopped \
-p 127.0.0.1:4001:4000 \
--network nas-dashboard_internal \
-v /volume1:/volume1 \
-v /volume1/docker/nas-dashboard/ssh/dashboard_terminal:/app/ssh/id_ed25519:ro \
-v /volume1/docker/nas-dashboard/ssh/vps_terminal:/app/ssh/vps_id_ed25519:ro \
-v /volume1/docker/nas-dashboard/ssh/mac_terminal:/app/ssh/mac_id_ed25519:ro \
-v /volume1/docker/nas-dashboard/ssh/known_hosts:/app/ssh/known_hosts:ro \
-v /volume1/docker/chat-summarizer/data:/app/data/chat-summarizer:ro \
--add-host host.docker.internal:host-gateway \
-e DOCKER_HOST=tcp://docker-socket-proxy:2375 \
-e GITEA_URL=http://gitea:3000 \
-e VOLUME_ROOT=/volume1 \
-e SSH_HOST=host.docker.internal \
-e SSH_USER=zjgump \
-e VPS_SSH_HOST=158.101.140.85 \
-e VPS_SSH_USER=jimmyg \
-e CADDY_VPS_SSH_HOST=161.33.182.109 \
-e CADDY_VPS_SSH_USER=ubuntu \
-e MAC_SSH_HOST=192.168.31.22 \
-e MAC_SSH_USER=jimmyg \
-e ADMIN_USER=jimmy \
-e CORS_ORIGINS=https://dev.nas.jimmygan.com,https://dev.nas.jimmygan.com:8443 \
-e WEBAUTHN_RP_ID=jimmygan.com \
-e WEBAUTHN_ORIGINS=https://dev.nas.jimmygan.com,https://dev.nas.jimmygan.com:8443,https://auth.jimmygan.com:8443 \
-e LITELLM_URL=http://litellm:4005 \
-e LITELLM_API_KEY=anything \
-e SECRET_KEY=c0e8dcd74b2d70c596dfa03928f2582ca8d88af04896a82ee6c2aeeaa6bd6199 \
nas-dashboard-dev:latest
# Connect to gitea_gitea network for database access (OPC_DB)
docker network connect gitea_gitea nas-dashboard-dev || true