vovkes222 Claude Opus 4.6 commited on
Commit
f3d676a
·
1 Parent(s): 3bc1ba9

fix(ci): split deploy into separate steps, fix exit code handling

Browse files

The heredoc+set-e combination caused false failures even when health
check passed. Split into discrete steps for clearer error reporting.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

Files changed (1) hide show
  1. .github/workflows/deploy.yml +17 -26
.github/workflows/deploy.yml CHANGED
@@ -15,42 +15,33 @@ jobs:
15
  runs-on: [self-hosted, local]
16
  timeout-minutes: 10
17
  steps:
18
- - name: Deploy via SSH
19
- run: |
20
- set -euo pipefail
21
- echo "=== Rebuilding legal-intern container ==="
22
-
23
- ssh prod bash -l <<'REMOTE'
24
- set -euo pipefail
25
- cd ~/SecondLayer
26
-
27
- echo "=== Pulling latest deployment config ==="
28
- git pull origin main
29
-
30
- cd deployment
31
 
32
- docker compose -f docker-compose.prod.yml \
33
- --env-file .env.prod \
34
- build --no-cache legal-intern-prod
 
 
35
 
36
- echo "=== Restarting container ==="
37
- docker compose -f docker-compose.prod.yml \
38
- --env-file .env.prod \
39
- up -d legal-intern-prod
 
40
 
41
- echo "=== Waiting for health ==="
 
42
  for i in $(seq 1 45); do
43
- if docker exec legal-intern-prod python -c "import urllib.request; urllib.request.urlopen('http://localhost:7860/')" 2>/dev/null; then
44
  echo "Container healthy after $((i*2))s"
45
  exit 0
46
  fi
47
  sleep 2
48
  done
49
-
50
- echo "=== Health check failed, dumping logs ==="
51
- docker logs --tail 30 legal-intern-prod
52
  exit 1
53
- REMOTE
54
 
55
  sync-hf:
56
  name: Sync to HuggingFace Space
 
15
  runs-on: [self-hosted, local]
16
  timeout-minutes: 10
17
  steps:
18
+ - name: Pull deployment config
19
+ run: ssh prod "cd ~/SecondLayer && git pull origin main"
 
 
 
 
 
 
 
 
 
 
 
20
 
21
+ - name: Build container
22
+ run: |
23
+ ssh prod "cd ~/SecondLayer/deployment && \
24
+ docker compose -f docker-compose.prod.yml --env-file .env.prod \
25
+ build --no-cache legal-intern-prod"
26
 
27
+ - name: Start container
28
+ run: |
29
+ ssh prod "cd ~/SecondLayer/deployment && \
30
+ docker compose -f docker-compose.prod.yml --env-file .env.prod \
31
+ up -d legal-intern-prod"
32
 
33
+ - name: Health check
34
+ run: |
35
  for i in $(seq 1 45); do
36
+ if ssh prod "docker exec legal-intern-prod python -c \"import urllib.request; urllib.request.urlopen('http://localhost:7860/')\"" 2>/dev/null; then
37
  echo "Container healthy after $((i*2))s"
38
  exit 0
39
  fi
40
  sleep 2
41
  done
42
+ echo "Health check failed"
43
+ ssh prod "docker logs --tail 30 legal-intern-prod" || true
 
44
  exit 1
 
45
 
46
  sync-hf:
47
  name: Sync to HuggingFace Space