DOCS/journey/plans/260311_24자동배포_0초종료_runtime_ssot복구_계획.md

4.2 KiB

tags
tags
infra
gitea-actions
deploy
24-server
runtime
plans

24 자동배포 0초 종료 runtime SSOT 복구 계획

작성일: 2026-03-11 상태: draft 목표: Gitea Actions의 24 배포 경로를 현재 runtime SSOT에 다시 맞춰 git push -> 자동 배포를 복구한다.

관련 문서

결정

  • 이번 문제는 rb8001 코드가 아니라 배포 인프라 경로 + 51123 runner 실행층 문제로 다룬다.
  • c7bca94.env.deploy와 예시 파일은 이미 SSOT에 맞춰졌고, github_deploy 공개키를 24 authorized_keys에 반영해 수동 SSH 인증도 복구됐다.
  • 따라서 남은 우선순위는 runner 실행 복구 확인 -> deploy key 인증 유지 확인 -> workflow 본문 재진입 검증 -> 24에서 최종 닫힘/worklog 작성 순서다.

범위

  • 포함:
    • 51123 self-hosted runner 기동 상태 복구
    • runner 시작 방식과 운영 기준(systemd vs script) 정리
    • 최신 #677과 같은 0s 종료 run의 dispatch/task fetch 경로 확인
    • 24 배포 대상 host/port/path SSOT 확인
    • 23 runner deploy key와 24 authorized_keys 정합성 확인
    • 실제 push 기반 자동 배포 재검증
  • 제외:
    • 애플리케이션 기능 수정
    • 24 runtime.env/secrets.env 구조 재설계

실행 단계

  1. 51123에서 runner 프로세스, 시작 스크립트, 등록 정보(/etc/act_runner/.runner)를 기준으로 실제 기동 경로를 확정한다.
  2. /home/admin/scripts/start-act-runner.sh 기반 재기동 구조가 맞는지 확인하고, 같은 방식으로 runner를 재기동해 ps -ef, act_runner.log, Gitea DB action_runner.last_online이 현재 시각으로 갱신되는지 본다.
  3. backlog가 다시 흐르기 시작하는지 action_task 신규 row 생성과 pending queue 감소로 확인한다.
  4. rb8001/.gitea/workflows/cicd.yml, .env.deploy, .env.deploy.example가 현재 SSOT(192.168.0.106:51124, /home/admin/robeing/rb8001)를 유지하고, DEPLOY_SSH_KEY_PATH=/home/admin/.ssh/github_deploy가 실제 운영 키와 일치하는지 재확인한다.
  5. 24 admin ~/.ssh/authorized_keysgithub_deploy 공개키가 유지되는지 확인하고, 51123에서 ssh -i /home/admin/.ssh/github_deploy -p 51124 admin@192.168.0.106 'echo SSH_OK' 재검증을 남긴다.
  6. rb8001을 단독으로 다시 실행해 action_run_job.task_id가 실제 task id로 바뀌는지, Test SSH Connection을 넘어 Deploy to Target Server까지 진입하는지 확인한다.
  7. workflow가 본문에 진입하면 git pull, docker compose down && docker compose up -d --build, health check까지 실제 로그를 확인한다.
  8. 복구 후 닫힘 판단과 worklog 작성은 24 서버에서 실제 배포 성공 근거를 붙여 마무리한다.
  9. runner 재기동 후에도 유사 증상이 반복되면 Gitea runner online 상태, dispatch/task 저장 경로, repo-level Actions 설정을 추가 점검하고, 운영 방식은 systemd 유닛 또는 동등한 자동복구 경로로 별도 승격한다.

완료 기준

  • cicd.yml task가 0s 종료가 아니라 checkout 이후 실제 실행 로그를 남긴다.
  • 51123에서 github_deploy로 24 51124 포트 수동 SSH가 지속적으로 성공한다.
  • Gitea DB 기준 action_run_job.task_id != 0, action_task 신규 row 생성, action_runner.last_online 현재 시각 갱신이 확인된다.
  • rb8001 새 run이 Test SSH ConnectionDeploy to Target Server를 통과한다.
  • git push origin main 후 24 서버 rb8001 컨테이너가 자동 재시작된다.
  • 수동 배포 없이도 docker ps, 헬스체크, 최신 커밋 반영이 확인된다.

한 줄 결론

  • 목표는 24=192.168.0.106 SSOT를 유지한 채 51123 self-hosted runner를 다시 실행 경로에 올려 git push -> workflow 본문 실행 -> 24 자동 배포를 복구하는 것이다.