f27d414182
The workflow needs to be in the same directory as the compose file for docker compose to work properly. Manual execution worked, so replicate that approach.
72 lines
2.5 KiB
YAML
72 lines
2.5 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
|
|
cd /nas-dashboard
|
|
# Stop and remove container, then recreate with new image
|
|
docker stop nas-dashboard-dev 2>/dev/null || true
|
|
docker rm nas-dashboard-dev 2>/dev/null || true
|
|
docker compose -f docker-compose.dev.yml up -d --pull never
|