Settings: [main] CI/CD에 대한 문서 업데이트
All checks were successful
baekjoon-bot-cicd / build_push_deploy (push) Successful in 1m32s
All checks were successful
baekjoon-bot-cicd / build_push_deploy (push) Successful in 1m32s
This commit is contained in:
@@ -90,3 +90,50 @@ docker logs -f baekjoon-bot
|
||||
- Cause: 해당 workbook에서 아직 보내지 않은 문제 후보가 없음(`workbook_sends`에 모두 기록됨)
|
||||
- Fix: 진행상황 초기화 API 호출(주의: 관리자 권한 필요) 또는 다른 workbook 사용
|
||||
- Verify: 초기화 후 workbook 모드 호출 시 정상 추천 반환
|
||||
|
||||
## Supported Deployment Modes
|
||||
- (기존) Dockerfile 기반 단일 컨테이너 실행: `dockerfile`
|
||||
- (추가) Gitea Actions 기반 CI/CD: `.gitea/workflows/cicd.yml`
|
||||
- Docker Hub로 이미지 푸시 후,
|
||||
- 러너/서버에서 `docker compose -f /nkeysworld/compose.yml pull/up`으로 배포
|
||||
|
||||
> 참고: 레포에는 Docker Compose 파일이 포함되어 있지 않습니다. CI/CD 배포는 서버에 존재하는 `/nkeysworld/compose.yml`을 사용합니다.
|
||||
|
||||
## Deployment
|
||||
### CI/CD (Gitea Actions)
|
||||
Workflow: `.gitea/workflows/cicd.yml`
|
||||
|
||||
#### Trigger
|
||||
- `main` 브랜치로 `push` 시 `build_push_deploy` 잡 실행
|
||||
|
||||
#### What it does
|
||||
- (1) Manual checkout (Gitea `/gitea` 서브패스 고려)
|
||||
- (2) Docker Hub 로그인
|
||||
- (3) 이미지 빌드/푸시: `${DOCKERHUB_USERNAME}/baekjoon-bot:latest`
|
||||
- (4) 배포: `docker compose -f /nkeysworld/compose.yml pull baekjoon-bot` + `up -d baekjoon-bot`
|
||||
- (5) 정리: `docker image prune -f`
|
||||
- (6) 알림: Discord webhook (성공/실패 모두 전송)
|
||||
|
||||
#### Required Secrets
|
||||
- `NKEY_PAT`: `https://${ACTOR}:${TOKEN}@nkeystudy.site/gitea/${REPO}.git` fetch에 사용
|
||||
- `DOCKERHUB_USERNAME`, `DOCKERHUB_TOKEN`: `docker login`에 사용
|
||||
- `DISCORD_WEBHOOK`: 결과 알림 전송에 사용
|
||||
|
||||
#### Server/Runner Prerequisites
|
||||
- `docker` 실행 가능
|
||||
- `docker compose` 실행 가능(워크플로우에 설치 보완 단계가 있으나, 기본적으로 compose가 동작해야 함)
|
||||
- `/nkeysworld/compose.yml` 파일이 존재해야 함
|
||||
- compose 내 서비스명이 `baekjoon-bot` 이어야 함(워크플로우가 해당 서비스만 `pull/up` 수행)
|
||||
|
||||
#### Rollback (workflow 기준)
|
||||
- 워크플로우는 `:latest`만 푸시/배포합니다.
|
||||
- 롤백을 하려면(운영 정책에 따라):
|
||||
- compose가 특정 태그로 pinning 되도록 변경하거나
|
||||
- `latest` 대신 태그 전략을 도입해야 합니다.
|
||||
|
||||
## Operations
|
||||
### Notifications
|
||||
- CI/CD 결과는 Discord webhook(`DISCORD_WEBHOOK`)으로 전송됩니다.
|
||||
- 성공: `Build & Deploy Success`
|
||||
- 실패: `Build or Deploy Failed`
|
||||
- 포함 정보: repo, commit sha, actor, timestamp
|
||||
|
||||
Reference in New Issue
Block a user