action runner 타입 제한, README 추가
This commit is contained in:
52
README.md
Normal file
52
README.md
Normal file
@@ -0,0 +1,52 @@
|
||||
# Git Repository Mirroring Workflow
|
||||
|
||||
## 목적
|
||||
- 외부 SSH Git 저장소(센터 공용 코드 관리용 깃)의 특정 브랜치를 Gitea `center_dev` 조직의 개별 저장소로 순차 복제합니다.
|
||||
- 브랜치마다 대응 저장소명을 결정해 `main` 브랜치로 강제 푸시하며, 태그 동기화 옵션을 제공합니다.
|
||||
|
||||
## 실행 환경
|
||||
- Runner 라벨: `internal` (워크플로우는 이 라벨을 가진 러너에서만 동작)
|
||||
- 예약 실행: 매일 02:07 KST (`cron: 7 2 * * *`)
|
||||
- 수동 실행: `workflow_dispatch` 입력을 통해 선택 브랜치만 실행 가능
|
||||
|
||||
## 시크릿/변수
|
||||
- `secrets.SSH_PRIVATE_KEY`: 소스 저장소 접근용 SSH 키
|
||||
- `secrets.BASE_GITEA_TOKEN`: Gitea API/푸시 토큰
|
||||
- `vars.BASE_GITEA_URL`: Gitea URL (예: https://gitea.example.com)
|
||||
- `vars.BASE_GITEA_USER`: 토큰 소유자 ID
|
||||
- `vars.NOTIFY_WEBHOOK` (선택): 채팅 웹훅 URL. 없으면 알림 미전송.
|
||||
- `vars.SYNC_TAGS` (선택): `"false"`로 설정 시 태그 동기화 비활성화. 미설정 시 태그를 동기화함.
|
||||
|
||||
## 저장소 이름 매핑 규칙
|
||||
- `Develop_Net8` → `base`
|
||||
- `Develop_Net8_*` → `*` 부분만 사용 (예: `Develop_Net8_heh` → `heh`)
|
||||
- `Develop_*` / `develop_*` → 접두사 제거 (예: `develop_boxzainer` → `boxzainer`)
|
||||
- 그 외 브랜치는 브랜치명을 그대로 사용
|
||||
- `sourceRepo/branch,alias` 형태를 사용하면 alias로 최종 저장소명을 강제 설정
|
||||
- 동일 이름 타겟이 이미 존재하면 소스가 달라도 덮어쓰기 가능하므로 목록 구성 시 주의
|
||||
|
||||
## branch_list 사용법
|
||||
- 기본 실행 시 `branch_list` 파일을 위에서 아래로 순차 처리
|
||||
- `#`로 시작하거나 줄 내 `#` 이후는 주석으로 무시
|
||||
- `sourceRepo/branch` 또는 `sourceRepo/branch,alias` 형식을 한 줄에 하나씩 기입
|
||||
|
||||
## 수동 실행 입력
|
||||
- `branches`: 콤마로 구분한 `sourceRepo/branch` 또는 `sourceRepo/branch,alias` 목록
|
||||
- 입력이 비어 있으면 `branch_list` 전체를 처리
|
||||
|
||||
## 동작 개요
|
||||
1) 브랜치 존재 여부 확인 (`git ls-remote`)
|
||||
2) 타겟 저장소 존재 확인/생성 (`default_branch=main`)
|
||||
3) 커밋 동일 시 skip (알림 전송)
|
||||
4) 신규 생성: 소스 브랜치를 bare single-branch clone 후 `main`으로 강제 푸시
|
||||
5) 기존 존재: 빈 bare 저장소 init → 타겟 `main` 선-fetch로 객체 시드 → 소스 브랜치만 fetch → `main`으로 강제 푸시
|
||||
6) 태그 동기화가 켜져 있으면 태그 fetch/push(강제+prune)
|
||||
7) 기본 브랜치를 `main`으로 패치, 임시 디렉터리 정리
|
||||
|
||||
## 알림
|
||||
- `NOTIFY_WEBHOOK` 설정 시 시작/성공/실패/건너뛰기 상태를 KST 타임스탬프와 소요시간, 모드(신규/증분)와 함께 전송
|
||||
|
||||
## 주의사항
|
||||
- 대용량 데이터로 인해 순차 실행을 전제로 함(병렬 실행 비권장)
|
||||
- 태그 푸시는 `--force --prune`로 수행되어 소스에 없는 태그가 타겟에서 제거됨
|
||||
- 동일 저장소명을 의도하지 않은 소스 조합으로 사용할 경우 덮어쓰기가 발생할 수 있으므로 `branch_list`/alias를 신중히 관리
|
||||
Reference in New Issue
Block a user