docs(ci): add deploy troubleshooting harness
TaxBaik CI/CD / build-and-deploy (push) Successful in 53s
TaxBaik CI/CD / build-and-deploy (push) Successful in 53s
This commit is contained in:
@@ -1931,6 +1931,48 @@ else
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
### CI Deploy 트러블슈팅 하네스 (2026-06-28)
|
||||||
|
|
||||||
|
커밋 후 배포가 동작하지 않는다고 판단하기 전에 아래 순서로 확인한다. 추측으로 runner, secret, 커밋 제목을 원인으로 단정하지 않는다.
|
||||||
|
|
||||||
|
1. **푸시 결과 확인**
|
||||||
|
```powershell
|
||||||
|
git push origin master 2>&1 | Select-String "master|To|Processed|remote"
|
||||||
|
```
|
||||||
|
`master -> master`가 보이면 Git push는 성공이다. 이 단계는 CI 실행 성공을 의미하지 않는다.
|
||||||
|
|
||||||
|
2. **Actions run 생성 확인**
|
||||||
|
```powershell
|
||||||
|
$headers = @{ Authorization = "token $env:GITEA_TOKEN_TAXBAIK" }
|
||||||
|
$runs = Invoke-RestMethod -Headers $headers -Uri "http://178.104.200.7/api/v1/repos/kjh2064/taxbaik/actions/runs?limit=10"
|
||||||
|
$runs.workflow_runs | Select-Object id,path,event,head_sha,display_title,status,conclusion
|
||||||
|
```
|
||||||
|
`deploy.yml@refs/heads/master`, `event=push`, 최신 `head_sha`가 있어야 배포가 실제로 시작된 것이다.
|
||||||
|
|
||||||
|
3. **workflow 파싱 검증**
|
||||||
|
```powershell
|
||||||
|
curl.exe -sS -w "`nHTTP_STATUS:%{http_code}`n" `
|
||||||
|
-H "Authorization: token $env:GITEA_TOKEN_TAXBAIK" `
|
||||||
|
-H "Content-Type: application/json" `
|
||||||
|
-X POST "http://178.104.200.7/api/v1/repos/kjh2064/taxbaik/actions/workflows/deploy.yml/dispatches?return_run_details=true" `
|
||||||
|
--data '{"ref":"refs/heads/master","inputs":{}}'
|
||||||
|
```
|
||||||
|
`failed to unmarshal workflow content`가 나오면 `.gitea/workflows/deploy.yml` YAML 문법 문제다. 여러 줄 문자열은 반드시 `run: |` 블록 들여쓰기 안에 둔다.
|
||||||
|
|
||||||
|
4. **job 실패 로그 확인**
|
||||||
|
```powershell
|
||||||
|
curl.exe -sS -H "Authorization: token $env:GITEA_TOKEN_TAXBAIK" `
|
||||||
|
"http://178.104.200.7/api/v1/repos/kjh2064/taxbaik/actions/jobs/{job_id}/logs"
|
||||||
|
```
|
||||||
|
빌드/테스트/배포/헬스체크 중 어느 단계인지 먼저 분리한다.
|
||||||
|
|
||||||
|
**이번 장애 원인 기록**:
|
||||||
|
- `deploy.yml`의 Telegram 여러 줄 메시지 일부가 YAML 블록 들여쓰기 밖에 있어 Gitea workflow 파서가 실패했다.
|
||||||
|
- 이후 배포 실행은 되었지만, 운영 `Authentication:*:ClientId`가 빈 값인데 OAuth provider를 무조건 등록해 `ClientId` 예외로 500이 발생했다.
|
||||||
|
- 외부 OAuth provider는 ClientId/ClientSecret이 모두 있을 때만 등록한다.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## 12. 문제 해결
|
## 12. 문제 해결
|
||||||
|
|
||||||
| 문제 | 해결 |
|
| 문제 | 해결 |
|
||||||
|
|||||||
Reference in New Issue
Block a user