diff --git a/.gitea/workflows/mirror.yml b/.gitea/workflows/mirror.yml index ac05c3a..78dd220 100644 --- a/.gitea/workflows/mirror.yml +++ b/.gitea/workflows/mirror.yml @@ -8,7 +8,7 @@ on: required: false default: '' schedule: - - cron: '24 23 * * *' # Runs every day at 2:07 AM + - cron: '7 17 * * *' # UTC 17:07 == KST 02:07 jobs: mirror: @@ -44,10 +44,18 @@ jobs: ROOT_DIR="$(pwd)" NOTIFY_WEBHOOK="${NOTIFY_WEBHOOK:-}" SYNC_TAGS="${SYNC_TAGS:-true}" + TOTAL_SUCCESS=0 + TOTAL_SKIP=0 + TOTAL_ERROR=0 notify_status() { local status="$1" repo="$2" branch="$3" mode="$4" start_epoch="$5" extra="${6:-}" local ts end_epoch duration text payload + case "${status}" in + success) ((TOTAL_SUCCESS++)) ;; + skip) ((TOTAL_SKIP++)) ;; + error) ((TOTAL_ERROR++)) ;; + esac [[ -z "${NOTIFY_WEBHOOK}" ]] && return ts=$(TZ=Asia/Seoul date '+%Y-%m-%d %H:%M:%S %Z') case "${status}" in @@ -309,3 +317,15 @@ jobs: process_entry "${branch_name}" done < branch_list fi + + TOTAL_PROCESSED=$((TOTAL_SUCCESS + TOTAL_SKIP + TOTAL_ERROR)) + SUMMARY_TS=$(TZ=Asia/Seoul date '+%Y-%m-%d %H:%M:%S %Z') + SUMMARY_TEXT="브랜치 동기화 완료: 총 ${TOTAL_PROCESSED}개 (성공 ${TOTAL_SUCCESS}, 동일로 건너뜀 ${TOTAL_SKIP}, 오류 ${TOTAL_ERROR}) - ${SUMMARY_TS}" + echo "${SUMMARY_TEXT}" + if [[ -n "${NOTIFY_WEBHOOK}" ]]; then + SUMMARY_PAYLOAD=${SUMMARY_TEXT//\"/\\\"} + curl -sS -i -X POST \ + -H "Content-Type: application/json" \ + -d "{\"username\":\"Gitea\",\"icon_url\":\"https://gitea.hmac.kr/assets/img/logo.svg\",\"text\":\"${SUMMARY_PAYLOAD}\"}" \ + "${NOTIFY_WEBHOOK}" >/dev/null || echo "::warning::Summary notification failed" + fi diff --git a/README.md b/README.md index e4aca12..08ece54 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ ## 실행 환경 - Runner 라벨: `internal` (해당 라벨이 있는 셀프호스티드 러너에서만 실행) -- 예약 실행: 매일 02:07 KST (`cron: 7 2 * * *`) +- 예약 실행: 매일 02:07 KST (`cron: 7 17 * * *`, Gitea 스케줄 cron은 UTC 기준) - 수동 실행: `workflow_dispatch` 입력을 통해 선택 브랜치만 실행 가능 ## 시크릿/변수 diff --git a/to-do.md b/to-do.md index 9b828c4..a7079f6 100644 --- a/to-do.md +++ b/to-do.md @@ -25,3 +25,4 @@ 2025-12-16 18:16:34 KST 추가 업데이트: 증분 성능 검토를 위해 타겟 main 선-fetch를 켜고 끄기 위한 SEED_FROM_TARGET 옵션(기본 false) 추가. README에 옵션 설명 반영. 2025-12-16 18:20:26 KST 추가 업데이트: 증분 fetch 시 타겟 main 커밋을 shallow-exclude로 지정해 필요한 부분만 받아오도록 변경, README 동작 개요에 반영. 2025-12-16 18:29:58 KST 추가 업데이트: SEED_FROM_TARGET 옵션과 타겟 main 선-fetch 시드를 제거하고 shallow-exclude 기반 증분 fetch만 유지하여 증분 로직을 단순화. +2025-12-17 08:27:54 KST 추가 업데이트: 스케줄 cron을 UTC 기준임을 명시하고 02:07 KST 실행을 위해 `7 17 * * *`로 설정, 동기화 결과 요약(총/성공/건너뜀/오류) 메시지를 마지막에 출력하고 알림 웹훅으로 전송하도록 추가.