29 lines
2.8 KiB
Markdown
29 lines
2.8 KiB
Markdown
# AGENTS
|
|
|
|
## 목적
|
|
- 외부 SSH Git 저장소(`engdev@172.16.10.191:dev_Net8.git`)의 특정 브랜치를 Gitea `center_dev` 조직으로 순차 미러링하는 워크플로우를 관리합니다.
|
|
- 데이터가 크므로 병렬 대신 순차 처리하며, 브랜치별로 대응되는 Gitea 저장소에 강제 푸시합니다.
|
|
|
|
## 주요 흐름 (mirror.yml 설계 요약)
|
|
- 트리거: cron `0 2 * * *` 및 `workflow_dispatch`.
|
|
- 기본 데이터 소스: `branch_list` 파일을 한 줄씩 읽어 순차 처리.
|
|
- 브랜치→저장소 매핑 규칙: `Develop_Net8` → `base`, `Develop_Net8_*` → `*` 부분을 저장소 이름으로 사용하며, 그 외 브랜치는 브랜치명을 그대로 저장소 이름으로 사용.
|
|
- 실행 단계: 워크플로우 리포지토리 체크아웃 → SSH 키 저장/권한 설정 후 `ssh-keyscan 172.16.10.191` → `engdev@172.16.10.191` 홈 내 `.git` 디렉터리를 가진 하위 디렉터리마다 `git fetch --mirror --prune`로 사전 동기화 → 워크플로우 내부에서 소스별 로컬 캐시를 생성/갱신해 동일 커밋의 중복 fetch를 최소화 → 각 브랜치마다 Gitea API로 `center_dev` 조직에 저장소 존재 여부 확인(있으면 대상 저장소를 mirror clone 후 source 브랜치를 fetch/pull해 업데이트만, 없으면 저장소 생성 시 기본 브랜치를 `main`으로 설정) → 소스 브랜치를 대상 저장소 `main`으로 강제 푸시 → 푸시 후에도 기본 브랜치를 `main`으로 패치 → 임시 폴더 정리. 오류가 나도 다음 브랜치로 계속 진행하도록 처리. 실행 후 `backup_reports/`(report_*.md에 Decisions/Timings 전체 테이블 포함)를 artifact로 업로드해 사후 확인 가능.
|
|
|
|
## 시크릿/변수
|
|
- 현재 요구: `SSH_PRIVATE_KEY`(소스 접근), `GITEA_TOKEN`(Gitea API/푸시), `GITEA_URL`(Gitea 인스턴스 URL).
|
|
- to-do 예정 변경: Gitea 관련 항목을 `BASE_GITEA_` 접두사로 통일(`secrets.BASE_GITEA_TOKEN`, `vars.BASE_GITEA_URL`, `vars.BASE_GITEA_USER`).
|
|
|
|
## 남은 작업(to-do.md 기준)
|
|
- `mirror.yml`: timeout 설정 추가.
|
|
- `mirror.yml`: `workflow_dispatch` 입력으로 단일 브랜치 지정 기능 추가.
|
|
- `mirror.yml`: 입력 브랜치가 있으면 우선 처리, 없으면 `branch_list` 사용하도록 로직 변경.
|
|
- `mirror.yml`: Gitea 시크릿/변수 이름 `BASE_GITEA_` 접두사로 교체.
|
|
- `to-do.md`: 작업 완료 후 KST 기준 완료 시간 기록.
|
|
- 참고: to-do 하단에 "모든 작업이 완료되었습니다. (2025-12-15 17:42:52 KST)" 문구가 있으니 실제 완료 여부를 확인 필요.
|
|
|
|
## 추가 주의사항
|
|
- 초기 미러링은 시간이 오래 걸릴 수 있음.
|
|
- 보안: Gitea 토큰과 SSH 키는 최소 권한/노출 최소화.
|
|
- 기본 브랜치명이 `main`과 다를 경우 push 대상 브랜치명 확인 필요.
|