From f43f26f43c96fff5193bdca55b6b4d461ea055e3 Mon Sep 17 00:00:00 2001 From: zephyrdark Date: Sat, 7 Feb 2026 23:40:23 +0900 Subject: [PATCH] fix(ci): redesign deploy workflow for containerized Act Runner - Install Docker CLI + Compose plugin in job container - Remove rsync dependency (work directly from checkout workspace) - Use --project-name for consistent compose project naming - Use --env-file for compose variable substitution - Use docker exec for health checks (job container can't reach host ports) Co-Authored-By: Claude Opus 4.6 --- .gitea/workflows/deploy.yml | 37 ++++++++++++++++--------------------- 1 file changed, 16 insertions(+), 21 deletions(-) diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index 10973dc..72a16d0 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -11,6 +11,15 @@ jobs: - name: Checkout uses: actions/checkout@v4 + - name: Setup Docker CLI + run: | + apt-get update -qq && apt-get install -y -qq docker.io >/dev/null 2>&1 + mkdir -p ~/.docker/cli-plugins + curl -fsSL "https://github.com/docker/compose/releases/latest/download/docker-compose-linux-$(uname -m)" \ + -o ~/.docker/cli-plugins/docker-compose + chmod +x ~/.docker/cli-plugins/docker-compose + docker compose version + - name: Create .env.prod from secrets run: | cat < .env.prod @@ -27,30 +36,16 @@ jobs: - name: Deploy with Docker Compose run: | - DEPLOY_DIR=~/docker/galaxis-po - - mkdir -p "$DEPLOY_DIR" - - rsync -av --delete \ - --exclude '.git' \ - --exclude 'node_modules' \ - --exclude '__pycache__' \ - --exclude '.venv' \ - --exclude '.next' \ - ./ "$DEPLOY_DIR/" - - cd "$DEPLOY_DIR" - - docker compose -f docker-compose.prod.yml build - docker compose -f docker-compose.prod.yml down - docker compose -f docker-compose.prod.yml up -d + docker compose --project-name galaxis-po --env-file .env.prod -f docker-compose.prod.yml down || true + docker compose --project-name galaxis-po --env-file .env.prod -f docker-compose.prod.yml build + docker compose --project-name galaxis-po --env-file .env.prod -f docker-compose.prod.yml up -d - name: Health check run: | echo "Waiting for services to start..." - sleep 15 - docker compose -f ~/docker/galaxis-po/docker-compose.prod.yml ps - curl -sf http://127.0.0.1:3000 > /dev/null || { echo "Frontend: FAILED"; exit 1; } - echo "Frontend: OK" + sleep 20 + docker compose --project-name galaxis-po --env-file .env.prod -f docker-compose.prod.yml ps docker exec galaxis-po-backend python -c "import urllib.request; urllib.request.urlopen('http://localhost:8000/health')" || { echo "Backend: FAILED"; exit 1; } echo "Backend: OK" + docker exec galaxis-po-frontend wget -q --spider http://localhost:3000/ || { echo "Frontend: FAILED"; exit 1; } + echo "Frontend: OK"