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:
@@ -95,3 +95,38 @@ CREATE INDEX IF NOT EXISTS idx_workbook_sends_workbook
|
||||
ON workbook_sends(workbook_id);
|
||||
|
||||
```
|
||||
|
||||
## CI/CD (Gitea Actions)
|
||||
Workflow: `.gitea/workflows/cicd.yml`
|
||||
|
||||
### Trigger
|
||||
- `main` 브랜치로 `push` 시 실행
|
||||
|
||||
### Secrets (레포 Actions/Secrets에 등록)
|
||||
| Key | Purpose |
|
||||
|---|---|
|
||||
| `NKEY_PAT` | 워크플로우에서 Gitea repo를 수동 checkout(fetch)할 때 사용 |
|
||||
| `DOCKERHUB_USERNAME` | Docker Hub 이미지 네임스페이스 |
|
||||
| `DOCKERHUB_TOKEN` | Docker Hub 로그인 토큰 |
|
||||
| `DISCORD_WEBHOOK` | 성공/실패 알림 전송 |
|
||||
|
||||
### Build & Push
|
||||
- 워크플로우는 아래와 동일한 형태로 이미지를 빌드/푸시합니다.
|
||||
```bash
|
||||
IMAGE="${DOCKERHUB_USERNAME}/baekjoon-bot:latest"
|
||||
docker build -t "${IMAGE}" .
|
||||
docker push "${IMAGE}"
|
||||
```
|
||||
|
||||
> NOTE: 위 커맨드는 기본 Dockerfile을 사용합니다. 레포에 있는 파일은 `dockerfile`(소문자)이므로, 로컬/CI에서 동일하게 동작시키려면 파일명/옵션(`-f dockerfile`) 정합성을 확인하세요.
|
||||
|
||||
### Deploy
|
||||
- 워크플로우 배포는 레포 내부 파일이 아닌 서버(또는 self-hosted runner)에 존재하는 compose 파일을 사용합니다.
|
||||
```bash
|
||||
docker compose -f /nkeysworld/compose.yml pull baekjoon-bot
|
||||
docker compose -f /nkeysworld/compose.yml up -d baekjoon-bot
|
||||
docker image prune -f
|
||||
```
|
||||
|
||||
### Notifications
|
||||
- 워크플로우는 항상(`if: always()`) Discord webhook으로 결과를 전송합니다.
|
||||
|
||||
Reference in New Issue
Block a user