Files
nas-tools/.gitea/workflows/deploy-dev.yml
T
Gan, Jimmy 8514d5ea4b
Deploy Dashboard (Dev) / deploy-dev (push) Successful in 3m14s
Run Tests / Backend Tests (push) Failing after 1m35s
Run Tests / Test Summary (push) Has been cancelled
Run Tests / Frontend Tests (push) Has started running
fix: just restart container instead of recreating
Docker restart will use the new image that was just built.
Avoids all the network reconnection issues from recreating the container.
Simple and proven to work.
2026-04-04 02:18:26 +08:00

69 lines
2.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
container:
volumes:
- /var/packages/ContainerManager/target/usr/bin/docker:/usr/bin/docker
- /volume1/docker/nas-dashboard:/nas-dashboard
steps:
- name: Checkout exact commit
run: |
set -euo pipefail
git init .
git remote add origin http://gitea:3000/jimmy/nas-tools.git
git fetch --depth 1 origin "$GITHUB_SHA"
git checkout --detach FETCH_HEAD
- 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: cp dashboard/docker-compose.dev.yml /nas-dashboard/docker-compose.dev.yml
- name: Deploy dev
run: |
export DOCKER_API_VERSION=1.43
# Just restart the container - it will use the new image
docker restart nas-dashboard-dev