# AGENTS ## 목적 - 외부 SSH Git 저장소(`engdev@172.16.42.118: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.42.118` → 각 브랜치마다 Gitea API로 `center_dev` 조직에 저장소 존재 여부 확인(있으면 대상 저장소를 mirror clone 후 source 브랜치를 fetch/pull해 업데이트만, 없으면 저장소 생성 시 기본 브랜치를 `main`으로 설정) → 소스 브랜치를 대상 저장소 `main`으로 강제 푸시 → 푸시 후에도 기본 브랜치를 `main`으로 패치 → 임시 폴더 정리. 오류가 나도 다음 브랜치로 계속 진행하도록 처리. ## 시크릿/변수 - 현재 요구: `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 대상 브랜치명 확인 필요.