--mirror 문제 해결. 캐시 디렉토리 삭제.

This commit is contained in:
Lectom C Han
2025-12-19 17:32:09 +09:00
parent 2f20be8dec
commit 83e3c4cf18
2 changed files with 9 additions and 12 deletions

View File

@@ -263,16 +263,6 @@ jobs:
SOURCE_HEADS["${source_repo}|${branch}"]="${commit}"
done <<< "${remote_output}"
done
continue
fi
fi
while IFS=$'\t' read -r commit ref || [[ -n "${commit}" ]]; do
[[ -z "${commit}" || -z "${ref}" ]] && continue
branch="${ref#refs/heads/}"
SOURCE_HEADS["${source_repo}|${branch}"]="${commit}"
echo -e "${source_repo}\t${branch}\t${commit}" >> "${SOURCE_HEADS_FILE}"
done <<< "${remote_output}"
done
echo "Step 2) 타겟 해시 스캔 및 실행 계획 수립"
GITEA_HOSTNAME=$(echo "${BASE_GITEA_URL}" | sed -e 's~^https*://~~' -e 's~/$~~')
@@ -551,7 +541,7 @@ jobs:
fi
- name: Build markdown report
if: always()
if: always() && hashFiles('backup_reports/report_*.md') != ''
run: |
set -euo pipefail
REPORT_DIR="${REPORT_DIR:-${GITHUB_WORKSPACE}/backup_reports}"

View File

@@ -13,10 +13,17 @@
- [x] 문서: README에 backup.yml 흐름/스케줄과 보고서 경로를 추가하고 mirror.yml을 수동 전용으로 명시
- [x] `backup.yml`: TARGET_SEED_DEPTH를 검증해 0/음수/비숫자 입력 시 50으로 보정, fallback depth 오류 메시지 최소화
- [x] `backup.yml`/`mirror.yml`: 소스 호스트를 172.16.10.191로 교체하고 실행 전 미러 서버 홈 내 모든 .git에 대해 `git fetch --mirror --prune` 수행
- [x] `backup.yml`: 소스별 로컬 캐시(mirror 클론)를 생성/갱신해 동일 커밋 다중 브랜치 처리 시 중복 fetch를 최소
- [x] `backup.yml`: 소스별 로컬 캐시(mirror 클론)를 제거하고 미러 서버를 직접 원격으로 사용하도록 단순
---
## Trouble shooting 기록
- 2025-12-19: 미러 서버 사전 fetch에서 `git fetch --mirror` 옵션 미지원으로 실패 → `git fetch --prune --prune-tags origin "+refs/*:refs/*"`로 교체.
- 2025-12-19: `.cache_sources/<repo>.git.git` 이중 확장자 및 중복 클론 문제 → 캐시 경로 접미사 제거 후 최종적으로 캐시 로직 자체 제거, 미러 서버 원격을 직접 사용하도록 변경.
- 2025-12-19: backup.yml에 중복된 Step 1 코드 블록으로 `continue`/`fi` 구문 오류 발생 → 중복 블록 제거하고 단일 ls-remote 결과만 사용.
- 2025-12-19: 보고서 생성 스텝이 로그 부재로 실패 → 보고서 생성 스텝을 분리하고 로그가 없을 때도 기본 테이블을 출력하도록 방어 로직 추가.
2025-12-16 09:04:36 KST 업데이트: mirror.yml에서 대상 저장소를 `git clone --mirror` 대신 `--bare`로 받도록 변경하여 `fatal: --mirror can't be combined with refspecs` 오류를 제거. 기존 저장소가 있을 때는 Gitea 원격을 bare 클론 후 `source` 리모트를 원본 SSH에 추가하고 브랜치만 fetch → `origin``main`으로 강제 푸시하도록 정리. 새 저장소일 때는 원본을 bare 클론해 `origin``source`로 rename 후 Gitea를 `origin`으로 추가, 같은 fetch→push 동작 수행. 작업 루트 경로를 `ROOT_DIR`에 저장해 fetch/push 실패 시에도 항상 원위치로 돌아가며 임시 디렉터리를 정리하도록 수정.
2025-12-16 09:42:00 KST 업데이트: mirror.yml에 NOTIFY_WEBHOOK 기반 상태 알림(start/success/error, 소요시간 포함) 추가 및 heredoc 제거로 문법 오류 수정. 브랜치명 매핑을 확장해 Develop_Net8_* 접두사는 제거, Develop_/develop_ 접두사는 제거하여 `develop_boxzainer``boxzainer`로 푸시되도록 수정하고, 접두사 없는 `develop` 등은 그대로 사용.
2025-12-16 09:42:00 KST 추가 업데이트: mirror.yml에서 타겟이 존재할 때 `git ls-remote`로 main 커밋을 조회하고 소스 브랜치 커밋과 동일하면 클론/푸시를 건너뛰도록 최적화. 알림에 skip 상태를 추가해 동일 커밋 시 건너뛰는 로그를 남기도록 개선.