2.8 KiB
2.8 KiB
AGENTS
목적
- 외부 SSH Git 저장소(
engdev@172.16.10.191:dev_Net8.git)의 특정 브랜치를 Giteacenter_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 대상 브랜치명 확인 필요.